2

我想将 int 打包到 python 中的字节字符串中,如下所示:将 29 打包到 '\x1d\x00' 中。我该怎么做?

4

1 回答 1

8

使用struct模块:

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

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

该字符'H'表示无符号短。

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

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

字节顺序是指最高有效字节在字节序列中是第一个还是最后一个。最重要的第一个称为“big-endian”,用'>';指定。struct.pack( ">H", 29)'\x00\x1d'。最不重要的第一个称为“little-endian”,这就是您的示例中显示的内容 -29编码为'\x1d\x00'.

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

于 2013-11-13T13:39:42.577 回答