struct用于不同语言中的数据类型转换成目标语言python的数据类型,用于在网络上传输,
网络上传输的类型都是bytes类型
1、打包,示例:
import struct
a = 20
b = 400
str = struct.pack('ii',a,b) # 标识符'i'表示转换为int,'ii'表示两个int变量,
print('length:',len(str)) #转换后结果长度为8个字节(int类型占用4个字节,连个int为8个字节)
print(str)
print(repr(str))
str = struct.pack('2i',a,b)#'2i'其中2表示个数,即两个int变量,与上面写法等价
print('length:',len(str))
print(str)
print(repr(str))
2、解包,
示例1:
import struct
a = 20
b = 400
str = struct.pack('ii',a,b) # 标识符'i'表示转换为int,'ii'表示两个int变量,
a1,a2 = struct.unpack('2i',str) #解包格式,struct.unpack('数据类型',打包的数据)
print("a1:",type(a1),a1)
print("a2:",type(a2),a2)
执行结果:
a1: <class ‘int’> 20
a2: <class ‘int’> 400
示例2:
sdata = struct.pach('i10sh',34,'abcdefghi\0',65) #打包的数据
a,b,c = struct.unpack('i10sh',data)
#'i10sh':i表示int,10s表示10个char类型,h表示short int
3、struct.calcsize 用于计算格式字符串对应的结果长度,如:
struct.calcsize(“ii”),返回8,每个int占用4个字节,所有2*4 占用8个字节