详细使用参考官方文档 : https://docs.python.org/zh-cn/2/library/struct.html
struct 简单介绍
struct 是 Python 的内置模块, 在使用 socket 通信的时候, 大多数据的传输都是以二进制流的形式的存在, 而 struct 模块就提供了一种机制, 该机制可以将某些特定的结构体类型打包成二进制流的字符串然后再网络传输,而接收端也应该可以通过某种机制进行解包还原出原始的结构体数据
struct 的使用
struct 模块可以将任意大小的数字转换成一个固定长度(可选择)的 bytes, 这个原理类似于前面章节讲过的 hash 算法, 不论内容多大, 最终的 hash 值长度不变, 不同的是 hash 算法是不可逆的, 而且传入的原材料可以是文本、字符串等许多数据类型, struct 可以反解出原来的数据
ps : struct 模块只能转换数字, 不能转换其他的数据类型
基本使用 pack 和 unpack
- 🔹正确使用示例 (打包字节长度对应表请往下看)
import struct
res = struct.pack("i",1234566) # 传入的必须是 int 类型
print(res) # b'\x86\xd6\x12\x00' (查看内容)
print(type(res)) # <class 'bytes'> (查看类型)
res2 = struct.unpack("i",res) # 使用什么 Format 打包就用什么解包
print(res2) # (1234566,) (是个元组)
print(type(res2