我想将 int 打包到 python 中的字节字符串中,如下所示:将 29 打包到 '\x1d\x00' 中。我该怎么做?
问问题
5356 次
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 回答