python中的struct主要是用来处理C结构数据的,读入时先转换为Python的字符串类型,
然后再转换为Python的结构化类型,比如元组(tuple)啥的。一般输入的渠道来源于文件或者网络的二进制流。
struct.pack()和struct.unpack()
- struct.pack(fmt,v1,v2,.....)
将v1,v2等参数的值进行一层包装,包装的方法由fmt指定。被包装的参数必须严格符合fmt。
最后返回一个包装后的字符串。
比如:
INFO = ['lxx',18,'female','183']
value = socket.htonl(len(INFO)) # 将主机字节顺序转换为网络字节顺序
size = struct.pack('L',value)
- struct.unpack(fmt,string)
解包,返回一个由解包数据(string)得到的元组(tuple)。其中,len(string) 必须等于 calcsize(fmt),这里面涉及到了一个calcsize函数。struct.calcsize(fmt):这个就是用来计算fmt格式所描述的结构的大小。
格式字符串(format string)由一个或多个格式字符(format characters)组成,对于这些格式字符的描述参照Python manual如下: