我如何在python中将int16打包成字节

时间:2013-11-13 13:36:57

标签: python int byte

我希望将pack int包含在python中的字节字符串中,如下所示:将29打包到' \ x1d \ x00'中。 我该怎么办?

1 个答案:

答案 0 :(得分:7)

使用struct模块:

>>> import struct
>>> struct.pack( "<H", 29 )
'\x1d\x00'

有关格式字符的说明,请参阅documentation。以下是相关部分的摘要:

字符'H'表示未签名的短片。

'<'是一个前缀字符,指定大小,字节顺序和对齐方式。

对于我们的目的,大小意味着无符号短元实际上有多少位。对于使用'<''=''!''>'中的任何一个指定的“标准尺寸”,这是16位。使用'@'(默认值),大小是实现定义的(尽管对于无符号短,它仍然很可能可能为16位)。

字节顺序表示最重要的字节是在字节序列中的第一个还是最后一个字节。最重要的第一个叫做“big-endian”并用'>'指定; struct.pack( ">H", 29)'\x00\x1d'。最不重要的第一个称为“小端”,并且是示例中显示的内容 - 29编码为'\x1d\x00'

(对齐与我们的目的无关,因为我们只包装一个元素。)