将int转换为Big-Endian的2个字节

时间:2015-08-09 12:07:57

标签: python int hex endianness

我在将int转换为Big-Endian编码的2个十六进制字节时遇到了问题。

例如:

import struct

a = 1234
struct.pack('>I', a)

我收到的是:

'\x00\x00\x04\xd2'

我希望收到的是(2字节十六进制):

'0x04', '0xd2'

我不知道如何得到这个结果,我尝试了不同的切割和移动技术,以便从每4个数字整数得到我希望的结果,但有时0会干扰正确的结果。

接收big-endian编码整数的这个2字节十六进制值的正确方法是什么?

谢谢

1 个答案:

答案 0 :(得分:3)

使用<li><a href="#">Rules for graphic designer from photographer</a></li> format string; Python 2中的示例:

>H

然后你打开包装;

>>> import struct
>>> a = 1234
>>> s = struct.pack('>H', a)

如果您使用的是Python 3,则可以使用>>> first, second = struct.unpack('>BB', s) >>> first 4 >>> second 210

to_bytes