Python标准库—struct模块

Python的struct模块用于在Python值和C结构之间转换二进制数据。它涉及字节顺序、大小和对齐方式,提供pack、unpack等函数,以及Struct类进行高效的数据打包和解包操作。字节顺序包括大端和小端,可通过sys.byteorder查看系统字节序。struct还支持网络字节顺序和本地字节顺序的转换。
摘要由CSDN通过智能技术生成

struct

将字节打包为二进制数据。

struct模块负责Python bytes对象在Python Value及C struct之间的转换。可以处理文件二进制数据、网络连接数据流或是其他源数据。它使用 Format Strings作为C结构布局的简洁描述以及与Python值的预期转换。

字节顺序,大小和对齐方式

第一个Format String可用于打包数据的字节顺序、大小和对齐。

Character Byte order Size Alignment
@ native native native
= native standard none
< little-endian standard none
> big-endian standard none
! network (= big-endian) standard none

如果第一个字节不在上述字符中,*@*被默认。

本机字节顺序是big-endian或little-endian,具体取决于主机系统,可使用sys.byteorder查看系统的字节序。

  • '@''=':都使用本地字节顺序,但后者的大小和排列是标准化的。
  • 无法指示非本机字节顺序(强制字节交换); 使用适当的选择'<''>'
  • ! 网络字节顺序(大端)

注意:

  • 小端字节序:低字节存于内存低地址;高字节存于内存高地址;

    在小端系统中,long型数据0x12345678

    地址 数据
    0x00000100 0x78
    0x00000101 0x56
    0x00000102 0x34
    0x00000103 0x12

    内存的地址是由低到高的顺序,而数据的字节也是由低到高的。

  • 大端字节序:高字节存于内存低地址;低字节存于内存高地址。

  • 在大端系统中,long型数据0x12345678

    地址 数据
    0x00000100 0x12
    0x00000101 0x34
    0x00000102 0x56
    0x00000103 0x78

    内存的地址是由低到高的顺序,而数据的字节却是由高到低的。

提供的函数

  • struct.pack(fmt,v1, v2, …)

    根据格式化字符打包值v1,v2,…,并返回字节对象。参数必须与格式所需的值完全匹配。

  • struct.unpack(fmt, buffer)

    根据格式化字符将字节对象解包。返回一个元组。

  • struct.iter_unpack(fmt,buffer)

    根据格式化字符将字节对象解包。返回一个迭代器。

  • struct.pack_into()

  • struct.unpack_from()

  • struct.calcsize(fmt)

    返回格式化字符对应结构的大小。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值