Python中没有二进制类型,但是可以存储二进制类型的数据,就是用字符串类型来存储二进制数据。通过struct模块来支持二进制的操作,struct模块中最重要的两个函数是pack()和unpack()。
pack()用于将Python值根据格式符转换为字符串(序列化),pack()的语法如下:
pack(fmt,v1,v2,...)
作用:按fmt格式把后面的数据v1,v2,...封装成指定的数据,返回一个包含了v1,v2,...的字节对象,v1,v2,...参数必须与fmt格式完全对应起来。fmt是格式字符串,v1,v2,...表示要转换的值。
unpack()与pack相反,用于将字节流转换成Python某种数据类型的值(解码,反序列化),unpack语法格式如下:
unpack(fmt,string)
作用:按照给定格式fmt解析字节流string,返回解析出来的数据所组成的元组。
例如:根据指定的格式将两个整数转换为字符串(字节流)
Import struct
a=10
b=20
buf1=struct.pack(“ii”,a,b) #’i’代表’integer,将a,b转换为字节流
print(“buf1’slength:”,len(buf1))
ret1=struct.unpack(‘ii’,buf1)
print(buf1,’<==>’,ret1)
运行结果:
buf1’s length:8
b’\n\x00\x00\x00\x14\x00\x00\x00’ <====> (10,20)