我有一个 11*32 字节的二进制文件(在这种情况下,它应该是动态的),它代表每 32 字节块的单独标头。第一个标头的介绍由魔术字节“5A”设置;以下标头是数字标记,如 0x01、0x02、...、0xnn。
从下面的代码中,我正在提取 32 字节块并解析单个字节(小端):
from struct import unpack
offsets = [1,3,4,4,4,4,4,4,2,1,1]
i = 0
zum={}
with open('file.bin', 'rb') as file:
data_offset = unpack("<I",file.read(16)[12:16])[0]
anz_pmcblock = int(data_offset/32)
file.seek(0)
for n in range(0,anz_pmcblock):
pmcblock = file.readline(32)
j=0
for off in offsets:
if j==0:
zum[i]=[pmcblock[j:j+off]]
j+=off
else:
zum[i].append(pmcblock[j:j+off])
j+=off
i+=1
第 10 个标头(标记为“0A”)将被读取为“ ' 并正在取消 readline() 的进一步阅读。如果我改变这个值,读数将被处理。
如何打开文件并将其读取为“真正的二进制文件”,而不进行编码?