| 函数 | return | explain | 
|---|---|---|
| pack(fmt,v1,v2…) | string | 按照给定的格式(fmt),把数据转换成字符串(字节流),并将该字符串返回. | 
| pack_into(fmt,buffer,offset,v1,v2…) | None | 按照给定的格式(fmt),将数据转换成字符串(字节流),并将字节流写入以offset开始的buffer中.(buffer为可写的缓冲区,可用array模块) | 
| unpack(fmt,v1,v2…..) | tuple | 按照给定的格式(fmt)解析字节流,并返回解析结果 | 
| pack_from(fmt,buffer,offset) | tuple | 按照给定的格式(fmt)解析以offset开始的缓冲区,并返回解析结果 | 
| calcsize(fmt) | size of fmt | 计算给定的格式(fmt)占用多少字节的内存,注意对齐方式 | 
压缩后的内容 = struct.pack(格式,被压缩的内容)
解压被压缩的内容 = struct.unpack(格式,压缩后的内容)
| 格式符 | C语言类型 | Python类型 | Standard size | 
|---|---|---|---|
| x | pad byte(填充字节) | no value | |
| c | char | string of length 1 | 1 | 
| b | signed char | integer | 1 | 
| B | unsigned char | integer | 1 | 
| ? | _Bool | bool | 1 | 
| h | short | integer | 2 | 
| H | unsigned short | integer | 2 | 
| i | int | integer | 4 | 
| I(大写的i) | unsigned int | integer | 4 | 
| l(小写的L) | long | integer | 4 | 
| L | unsigned long | long | 4 | 
| q | long long | long | 8 | 
| Q | unsigned long long | long | 8 | 
| f | float | float | 4 | 
| d | double | float | 8 | 
| s | char[] | string | |
| p | char[] | string | |
| P | void * | long |