用于读取和写入二进制源代码的python库。
pyjak的Python项目详细描述
皮雅克
用于读取和写入二进制源代码的python库。标准图书馆
程序包struct
有许多警告,不太方便用户使用。我们把它包起来
您将展示一个具有正常异常处理的光滑api。
安装
最简单的安装方法是通过pip:
pip3 install pyjak
示例
下面是如何序列化公共整数:
frompyjakimportdump_int32_bytes=dump_int32(1)print(_bytes)
结果:(在小endian系统上)
b'\x01\x00\x00\x00'
把它变成一个整数:
frompyjakimportparse_int32_int=parse_int32(b'\x01\x00\x00\x00')print(_int)
结果:(在小endian系统上)
1
无符号整数
所有整数函数都有无符号版本。假设你想合身 将数字4000000000转换为4字节整数你会需要 未签名版本:
frompyjakimportdump_uint32_bytes=dump_uint32(4000000000)print(_bytes)
结果:(在小endian系统上)
b'\x00(k\xee'
并将其转换为整数:
frompyjakimportparse_uint32_int=parse_uint32(b'\x00(k\xee')print(_int)
结果:(在小endian系统上)
4000000000
字节顺序
正如您可能已经注意到的,我们不需要指定字节顺序 字节数组的(或endianness)这是因为 pyjak默认为系统的本机字节顺序。
但也可以使用ByteOrder
指定所需的字节顺序。
枚举(调用int8或uint8函数时除外)。
可用订单如下:
frompyjakimportByteOrderByteOrder.LITTLEByteOrder.BIGByteOrder.NATIVEprint(ByteOrder.NATIVE==ByteOrder.LITTLE)
结果:(关于小endian系统)
True
您可以指定序列化输出的字节顺序:
frompyjakimportdump_int32,ByteOrder_bytes=dump_int32(1,ByteOrder.BIG)print(_bytes)
结果:
b'\x00\x00\x00\x01'
或者在解析时:
frompyjakimportparse_int32,ByteOrder_int=parse_int32(b'\x00\x00\x00\x01',ByteOrder.BIG)print(_int)
结果:
1
布尔人
您还可以序列化布尔值。假定布尔人被表示为 无符号1字节整数,其中0表示false,任何其他值表示true。
支持的数据类型
- int8(有符号1字节整数)
- uint8(无符号1字节整数)
- int16(有符号2字节整数)
- uint16(无符号2字节整数)
- int32(有符号4字节整数)
- uint32(无符号4字节整数)
- int64(有符号8字节整数)
- uint64(无符号8字节整数)
- 浮点32(4字节单精度浮点)
- float64(8字节双精度浮点)
- bool(无符号1字节整数)
支持的版本
- Python3.4
- Python3.5
- Python3.6
- Python3.7
问题
使用github repo上的issue tracker报告问题。
变更日志
v0.1.0
- 初次发布
作者
- 麦克斯·拜德(Miniwa)
许可证
麻省理工学院(见许可证)