Python中使用pack/unpack编码字节数据

在Python中,是没有int, long这些c系的强类型的,但是有的时候,我们需要按照字节规则,生成这样的数据。

例如:生成一份网络序的,char+unsigned long数据(4+8字节):

from struct import pack
pack('!BQ', 100, 1000)
'd\x00\x00\x00\x00\x00\x00\x03\xe8'

其中,第1个!表示为网络字节序。

BQ是占位符号,分别表示8bit的unsigned char和64bit的unsigned long long,更多的占位符号,可以见Python文档

读取也是类似的,使用unpack方法:

from struct import pack, unpack
data = pack('!BQ', 100, 1000)
unpack('!BQ', data)
> (100, 1000)

 

Leave a Reply

Your email address will not be published.