用于实现二进制文件格式的Python模块?

7

我经常需要编写与二进制文件格式交互的代码,而这些文件格式并没有现有的工具。我正在寻找一种简单的方法来实现针对结构化二进制格式的读取器/编写器 - 最好是能够让我使用某种简单的声明性格式创建读取器。

我发现了Construct模块,它可以工作,但似乎作者已经基本放弃了它。我想知道是否有任何替代方案可供人们使用。

2个回答

6

个人建议使用bitstring模块,但我可能有偏见,因为我编写了它。在手册中有一些简单的代码示例,用于读取/写入二进制格式。

这是通过二进制格式创建对象的一种方法:

fmt = 'sequence_header_code,
       uint:12=horizontal_size_value,
       uint:12=vertical_size_value,
       uint:4=aspect_ratio_information,
       ...
       '
d = {'sequence_header_code': '0x000001b3',
     'horizontal_size_value': 352,
     'vertical_size_value': 288,
     'aspect_ratio_information': 1,
     ...
    }

s = bitstring.pack(fmt, **d)

以及一种之后解析它的方法:

>>> s.unpack('bytes:4, 2*uint:12, uint:4')
['\x00\x00\x01\xb3', 352, 288, 1]

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接