跳转到主要内容

二进制数据强大的声明式对称解析器/构建器

项目描述

Construct 是一个强大的 声明式对称式 的二进制数据解析器和构建器。

与其编写 命令式代码 来解析数据片段,不如声明性地定义一个 数据结构 来描述您的数据。因为这个数据结构不是代码,您可以单方向使用它来 解析 数据到 Python 对象,也可以在另一个方向上,将对象 构建 成二进制数据。

该库提供了简单、原子的构造(如各种大小的整数),以及复合构造,允许您形成越来越复杂的层次结构和顺序结构。Construct 特性包括 位和字节粒度、易于调试和测试、易于扩展的子类系统 以及许多原始构造,使您的工作更加容易。

  • 字段:原始字节或数值类型

  • 结构和序列:将简单的构造组合成更复杂的结构

  • 位操作:将字节分割成位粒度的字段

  • 适配器:更改数据表示方式

  • 数组/范围:复制构造

  • 元构造:使用上下文(历史)来计算数据大小

  • 条件/开关:根据上下文分支计算路径

  • 按需(懒)解析:仅读取和解析您需要的内容

  • 指针:在数据流中跳转

  • 隧道:在数据前添加字节计数或压缩数据

示例

结构 是有序、命名的字段的集合

>>> format = Struct(
...     "signature" / Const(b"BMP"),
...     "width" / Int8ub,
...     "height" / Int8ub,
...     "pixels" / Array(this.width * this.height, Byte),
... )
>>> format.build(dict(width=3,height=2,pixels=[7,8,9,11,12,13]))
b'BMP\x03\x02\x07\x08\t\x0b\x0c\r'
>>> format.parse(b'BMP\x03\x02\x07\x08\t\x0b\x0c\r')
Container(signature=b'BMP')(width=3)(height=2)(pixels=[7, 8, 9, 11, 12, 13])

序列 是有序字段的集合,与 数组贪婪范围 不同,因为那两个是同质的

>>> format = Sequence(PascalString(Byte, "utf8"), GreedyRange(Byte))
>>> format.build([u"lalaland", [255,1,2]])
b'\nlalaland\xff\x01\x02'
>>> format.parse(b"\x004361789432197")
['', [52, 51, 54, 49, 55, 56, 57, 52, 51, 50, 49, 57, 55]]

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

construct-2.10.70.tar.gz (86.3 kB 查看哈希值)

上传时间:

构建分发

construct-2.10.70-py3-none-any.whl (63.0 kB 查看哈希值)

上传时间: Python 3

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误记录StatusPageStatusPage状态页面