您可以使用这些模块struct
,array
为此:
>>> from struct import pack, unpack
>>> from array import array
>>>
>>> # byte (unsigned char) + 2 bytes (unsigned short)
>>> header = pack('BH', 0, 15)
>>> # array of 15 null byte, you can also use string
>>> buffer = array('B', '\0' * 15).tostring()
>>>
>>> header
'\x00\x00\x0f\x00'
>>> buffer
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>>
>>> header + buffer
'\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>>
您应该考虑字节顺序。现在要解压缩该缓冲区,您可以执行以下操作:
>>> package = header + buffer
>>>
>>> package
'\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>>
>>> # unpacking the header
>>> unpack('BH', package[:4])
(0, 15)
>>>
>>> # unpacking the payload
>>> array('B', package[4:])
array('B', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>>