struct模块
struct模块
执行Python值和C结构体之间的转换,从而形成Python字节对象。它使用格式字符串作为底层C结构体的紧凑描述,进而根据这个格式字符串转换成Python值。
主要方法:
pack(fmt, v1, v2, ...) ------ 根据所给的fmt描述的格式将值v1,v2,...转换为一个字符串。
unpack(fmt, bytes) ------ 根据所给的fmt描述的格式将bytes反向解析出来,返回一个元组。
常用fmt字符:
Format | C Type | Python | 字节数 |
i(可以打包长度为10的数字) | int | integer | 4 |
q(可以打包长度为19的数字) | long long | integer | 8 |
在python中主要用在 Socket编程里面解决粘包:
在send数据前可以使用Struct对数据包长度进行打包为4或8个字节。
接收端就可以首先读取固定长度的4或8个 包长度字节,从而彻底解决粘包的问题。