Skip to main content
 首页 » 编程设计

python之用python解析二进制格式

2025年05月04日14Terrylee

我有一个包含以下 header 的二进制文件:4 字节字符串,1 字节数字,然后是 4 字节 uint32 数字。

我的理解正确吗? sbet_data[0:3]是字符串,sbet_data[4:5]是1字节数,那么4字节uint32数是多长呢?我在哪里可以找到相应字节大小与格式的良好图表,例如,我还想知道 8 字节 (uint64) 的大小。

sbet_file = open('abc.dat') 
sbet_data = sbet_file.read() 
 
s = struct.Struct('4s b I') 
unpacked_data = s.unpack(sbet_data[0:12]) 

请您参考如下方法:

您需要以二进制模式打开您的文件,并且只从您的文件中读取 12 个字节:

import struct 
 
with open('abc.dat', 'rb') as fobj: 
    byte_string, n1, n4 = struct.unpack('4sbI', fobj.read(12))  

你会得到一个字节串。假设它是 ASCII,你可以这样解码:

my_string = byte_string.decode('ascii') 

struct 的文档包含 tables of format strings . 根据其中一个表,uint64 将是 L。