<分区>
我想在 python 中将 int 打包成字节字符串,如下所示:将 29 打包到 '\x1d\x00' 中。 我该怎么做?
<分区>
我想在 python 中将 int 打包成字节字符串,如下所示:将 29 打包到 '\x1d\x00' 中。 我该怎么做?
最佳答案
使用 struct
模块:
>>> import struct
>>> struct.pack( "<H", 29 )
'\x1d\x00'
参见 documentation有关格式字符的说明。以下是相关部分的摘要:
字符'H'
表示未签名的短。
'<'
是指定大小、字节顺序和对齐方式的前缀字符。
就我们的目的而言,大小是指一个无符号短整型实际有多少位。使用“标准尺寸”,用 '<'
中的任何一个指定, '='
, '!'
, 或 '>'
,这是 16 位。对于“@”(默认设置),大小是实现定义的(尽管对于无符号短整数,它仍然很可能为 16 位)。
字节顺序是指最重要的字节在字节序列中排在最前面还是最后。最重要的优先称为“big-endian”,并用 '>'
指定。 ; struct.pack( ">H", 29)
是'\x00\x1d'
.最不重要的优先称为“小端”,并且是您的示例中显示的内容 - 29
编码为 '\x1d\x00'
.
(对齐与我们的目的无关,因为我们只打包一个元素。)
关于python - 我如何在 python 中将 int16 打包成字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19955281/