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

标签 python templates resources binary

我经常发现自己需要编写代码来与没有现成工具的二进制文件格式进行交互。我正在寻找一种简单的方法来实现结构化二进制格式的读取器/写入器——理想的方法是让我使用某种简单的声明格式创建读取器。

我找到了 Construct模块,它可以工作,但似乎在很大程度上被作者放弃了。我想知道人们是否已经使用过任何替代方案。

最佳答案

我个人会使用 bitstring模块,但我写的时候可能有偏见。 manual 中有一些用于读取/写入二进制格式的简单代码举个例子。

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

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]

关于用于实现二进制文件格式的 Python 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5055119/

相关文章:

c# - 国际化的最佳实践 : What is the best way to store exception/error or informational messages in C#.net?

python - 如何在keras中使用flow_from_dataframe输入多张图片?

c++ - 如何使用模板类的子类推导C++中模板函数的模板参数?

c++ - 我在这里误用了模板吗?

C++ C2440 '<function-style-cast>' : cannot convert from 'Node<T> *const ' to 'Iterator<const T>'

c++ - 应用程序 VS Express 2012 c++ 的设置图标

wpf - 数据模板的复用

python - 如何在输出窗口中并排打印单独的多行 ascii 符号

Python-密码库

python - 如何覆盖 MagicMock 子类上的 __getitem__