用于二进制数据的强大声明式解析器/构建器
项目描述
Construct是一个强大的 声明式 解析器(和构建器)用于二进制数据。
您不需要编写 命令式代码 来解析数据,而是声明性地定义一个 数据结构 来描述您的数据。由于这个数据结构不是代码,您可以用它来 解析 数据到Python对象,也可以用它在另一个方向上(构建)将对象转换为二进制数据。
该库提供了简单的、原子性的构建块(如各种大小的整数),以及复合构建块,允许您形成更复杂的层次结构。Construct具有 位和字节粒度、易于调试和测试、易于扩展的子类系统,以及许多原始构建块以简化您的工作
字段:原始字节或数值类型
结构体和序列:将简单的构建块组合成更复杂的构建块
适配器:更改数据表示方式
数组/范围:复制构建块
元-构建块:使用上下文(历史)来计算数据大小
如果/切换:根据上下文分支计算路径
按需(懒)解析:只读取您需要的内容
指针:在数据流中从这里跳转到那里
示例
PascalString 是一个以长度为前缀的字符串
>>> from construct import * >>> >>> PascalString = Struct("PascalString", ... UBInt8("length"), ... Bytes("data", lambda ctx: ctx.length), ... ) >>> >>> PascalString.parse("\x05helloXXX") Container({'length': 5, 'data': 'hello'}) >>> PascalString.build(Container(length = 6, data = "foobar")) '\x06foobar'
而不是手动指定长度,让我们使用一个适配器
>>> PascalString2 = ExprAdapter(PascalString, ... encoder = lambda obj, ctx: Container(length = len(obj), data = obj), ... decoder = lambda obj, ctx: obj.data ... ) >>> PascalString2.parse("\x05hello") 'hello' >>> PascalString2.build("i'm a long string") "\x11i'm a long string"
资源
Construct的主页是http://construct.readthedocs.org,您可以在那里找到各种文档和资源。该库本身是在github上开发的;请使用github issues报告错误,并使用github pull-requests提交补丁。对于一般讨论或问题,请使用新的讨论组。
要求
Construct应在任何Python 2.5-3.3实现上运行。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解安装包的更多信息。
源代码分发
cython-construct-2.5.8.tar.gz (798.8 kB 查看哈希值)
构建分发
cython_construct-2.5.8-py3.5-win-amd64.egg (499.7 kB 查看哈希值)
关闭
cython-construct-2.5.8.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4de90d3ddd3cb7caa6acf67af74971d7a00168a0073319688b82dac535ccd374 |
|
MD5 | dc86764d4f55f056bf9e0e46c2765e87 |
|
BLAKE2b-256 | 987e5d1635e7bc9a5e4aabbf3566f966ddff9026ce9724a733e580737ad8430b |
关闭
cython_construct-2.5.8-py3.5-win-amd64.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 83db7c8e19e9cfc816a856e509660cec31203591df55c9fc9cdf6942e193c52d |
|
MD5 | e6788154a9f900f9e3bc27829fc97a1c |
|
BLAKE2b-256 | eb81f27428601bfbf5f37893992a416f3892b03c3d845a7a0fe3b7b544e0b913 |
关闭
哈希值 for cython_construct-2.5.8-cp35-cp35m-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b014b5b1e4d9233b942af0f744d290fec325955389f155ee78f2b05ca8cde101 |
|
MD5 | 4f37ab57a18a0c533bf0a72fa8124697 |
|
BLAKE2b-256 | 41f6319ada77d400e5440cdf2f444c0ca847dd16d6a396ff478b3d59ef85dc95 |
关闭
哈希值 for cython_construct-2.5.8-cp35-cp35m-macosx_10_11_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d56ba05c88f6a6aac1c3fcdfd503b2174370d3e22edbdb9e50b4ec7cdcfc97ca |
|
MD5 | f5229cfb405ee04f57adb85fe413d0e8 |
|
BLAKE2b-256 | 73d66e845fe8b5c135a25b18e0f0d2d212148962b6d0382f61a156467644c502 |
关闭
哈希值 for cython-construct-2.5.8.macosx-10.11-x86_64.tar.gz
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ac3f0bd553141dbf9389144463063ca7a150e8d290d60bc8e6f50a8c877bdfd5 |
|
MD5 | 68598c3dc86e9f736bbde2741a170272 |
|
BLAKE2b-256 | 8c96d56f5b04de31ea9eda847121ebc95e5fff47b518930772b0659ec256bc6a |