我有一个包含以下 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。
