首先看一下,struct 的字节顺序格式。
其次是struct的格式对照表。
下面是案例:
单项数据编解码
>>>struct.pack('i',379978)
b'J\xcc\x05\x00'
>>>struct.pack('>i',379978)
b'\x00\x05\xccJ'
解析:
>>>struct.unpack('i',b'J\xcc\x05\x00')
(379978,)
>>>struct.unpack('>i',b'\x00\x05\xccJ')
(379978,)
多项数据编解码
>>>struct.pack('>hiI',9358,379978,1023568)
b'$\x8e\x00\x05\xccJ\x00\x0f\x9eP'
>>>struct.pack('>4shiI',b'jhon',9358,379978,1023568)
b'jhon$\x8e\x00\x05\xccJ\x00\x0f\x9eP'
解析:
>>>struct.unpack('>hiI',b'$\x8e\x00\x05\xccJ\x00\x0f\x9eP')
(9358, 379978, 1023568)
>>>struct.unpack('>4shiI',b'jhon$\x8e\x00\x05\xccJ\x00\x0f\x9eP')
(b'jhon', 9358, 379978, 1023568)
字节流转十六进制显示:
>>>b'$\x8e\x00\x05\xccJ\x00\x0f\x9eP'.hex()
'248e0005cc4a000f9e50'
十六进制转字节流
>>>bytes.fromhex('248e0005cc4a000f9e50')
b'$\x8e\x00\x05\xccJ\x00\x0f\x9eP'
十进制数,根据转换成特定字节个数的十六进制。例如字节数是4.
>>>hex(536)[2:].zfill(8)
'00000218'
十六进制转十进制
>>>int('00000218',16)
536