用于读取和写入二进制源代码的python库。

pyjak的Python项目详细描述


皮雅克

用于读取和写入二进制源代码的python库。标准图书馆 程序包struct有许多警告,不太方便用户使用。我们把它包起来 您将展示一个具有正常异常处理的光滑api。

Build Status

安装

最简单的安装方法是通过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)

许可证

麻省理工学院(见许可证)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java连接在一个屏幕上成功下载,在第二个屏幕上用几乎相同的代码获得错误   java调用super。超级的方法,跳过超级。方法   使用Web服务连接到sharepoint 2013的Java应用程序   java我无法正确呈现editText   httpurlconnection如何在java中检查url连接状态   java Spring Security可以为同一用户接受多个密码吗?   java如何在PreparedStatement中使用自动生成的@Id?   java每个数组表示一个位模式   java我不确定如何记录鼠标在某个区域被点击的次数   spring如何解决:java。lang.NoSuchMethodError:javax。坚持不懈实体管理器。createStoredProcedureQuery(Ljava/lang/String;)   java如何为blackberry中listfield项内的不同字段触发事件   安卓使用Proguard混淆java代码   java在grails 2中与多个数据源有一个和一个域关联。十、   java在尝试在单击按钮时返回combobox值时一直出错   java我可以在setter中使用@Resource注释而不是字段吗?   java Eclipse调试步进不工作   java比较相同对象的两个表并选择不同的表