python struct

本文详细介绍了Python使用struct模块执行与C结构体之间的转化过程,包括如何使用pack、unpack和calcsize函数进行数据的打包与解析,并讨论了字节顺序的重要性。此外,文章还阐述了如何通过buffer、pack_into和unpack_from方法优化内存使用,特别是在高性能场景下的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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进行字节的填充,而不会每次产生一个新对象字节进行存储。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值