学无止境
我们为梦想前行!

python使用二进制数据记录布局

python使用二进制数据记录布局,struct 模块为使用变长的二进制记录格式提供了 pack() 和 unpack() 函数。下面的示例演示了在不使用 zipfile 模块的情况下如何迭代一个 ZIP 文件的头信息。压缩码 "H" 和 "I" 分别表示2和4字节无符号数字,"<" 表明它们都是标准大小并且按照 little-endian 字节排序:

import struct

with open('myfile.zip', 'rb') as f:
    data = f.read()

start = 0
for i in range(3):                      # show the first 3 file headers
    start += 14
    fields = struct.unpack('<IIIHH', data[start:start+16])
    crc32, comp_size, uncomp_size, filenamesize, extra_size = fields

    start += 16
    filename = data[start:start+filenamesize]
    start += filenamesize
    extra = data[start:start+extra_size]
    print filename, hex(crc32), comp_size, uncomp_size

    start += extra_size + comp_size     # skip to the next header
赞(0)
转载请注明出处链接:Pycharm » python使用二进制数据记录布局

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址