struct
python没有专门处理字节的数据类型。但由于b'str'
可以表示字节,所以,字节数组=二进制str,在Python中,假设要把一个32位无符号整数变成字节,也就是4个长度的bytes,你得配合位运算符这么写:
>>> n = 10240099
>>> b1 = (n & 0xff000000) >> 24
>>> b2 = (n & 0xff0000) >> 16
>>> b3 = (n & 0xff00) >> 8
>>> b4 = n & 0xff
>>> bs = bytes([b1, b2, b3, b4])
>>> bs
b'\x00\x9c@c'
非常麻烦,好在Python提供了一个struct
模块来解决bytes
和其他二进制数据类型的转换。struct
的pack
函数把任意数据类型变成bytes
:
>>> import struct
>>> struct.pack('>I', 10240099)
b'\x00\x9c@c'
pack的第一个参数是处理指令,’>I’的意思是:>表示字节顺序是big-endian,也就是网络序,I表示4字节无符号整数。unpack
把bytes变成相应的数据类型:
>>>