总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。
python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。
import struct
a=12.34
#将a变为二进制
bytes=struct.pack("i",a)
此时bytes就是一个string字符串,字符串按字节同a的二进制存储内容相同。
再进行反操作
现有二进制数据bytes,(其实就是字符串),将它反过来转换成python的数据类型:
a,=struct.unpack("i",bytes)
注意,unpack返回的是tuple
所以如果只有一个变量的话:
bytes=struct.pack("i",a)
那么,解码的时候需要这样
a,=struct.unpack("i",bytes) 或者 (a,)=struct.unpack("i",bytes)
如果直接用a=struct.unpack("i",bytes),那么 a=(12.34,) ,是一个tuple而不是原来的浮点数了。
如果是由多个数据构成的,可以这样:
1
2
3
4
5
6
7
8
9
a="hello"
b