python struct

来源:互联网 发布:人工智能吧 编辑:程序博客网 时间:2024/06/07 00:06

python 正是使用struct模块执行python值和C结构体之间的转化,从而形成Python字节对象。

pack(fmt, v1,v2,...) ——根据所给的fmt描述的格式将值v1,v2,...转换为一个字符串

unpack(fmt, bytes)——根据所给的fmt描述的格式将bytes反向解析出来,返回一个元组

calcsize(fmt)——根据所给的fmt描述返回该结构的大小



字节顺序:

另一方面,打包后的字节顺序默认上是操作系统决定的,当然struct模块也提供了自定义字节顺序的功能,可以指定大端存储,小端存储等特定的字节顺序。



利用buffer,使用pack_into和unpack_from方法

使用二进制打包的场景大部分都是对性能要求比较高的使用环境中。而在上面提到的pack方法都是对输入数据进行操作后重新创建了一个内存空间用于返回,也就是说我们每次使用pack都会在内存中分配出相应的内存资源,有时是一种很大的浪费。struct模块还提供了pack_into()和unpack_from()的方法来解决这样的问题,也就是对一个已经提前分配好的buffer进行字节的填充,而不会每次产生一个新对象字节进行存储。



0 0