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

Python 将int转换为2字节的Big-Endian,python,int,hex,endianness,Python,Int,Hex,Endianness,我在将int转换为2个十六进制字节的Big-Endian编码时遇到问题 例如: import struct a = 1234 struct.pack('>I', a) 我收到的是: '\x00\x00\x04\xd2' 我希望收到的是(2字节十六进制): 我不知道如何得到这个结果,我尝试了不同的切割和移动技术,以便从每4个整数中得到我想要的结果,但有时0会干扰正确的结果 接收big-endian编码整数的2字节十六进制值的正确方法是什么 谢谢使用>H; Python 2中的示例: &

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

例如:

import struct

a = 1234
struct.pack('>I', a)
我收到的是:

'\x00\x00\x04\xd2'
我希望收到的是(2字节十六进制):

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

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

谢谢

使用
>H
; Python 2中的示例:

>>> import struct
>>> a = 1234
>>> s = struct.pack('>H', a)
然后你打开它

>>> first, second = struct.unpack('>BB', s)
>>> first
4
>>> second
210

如果您使用的是Python 3,则可以使用
来读取字节数

In [1]: a = 1234

In [2]: a.to_bytes(2, 'big')
Out[2]: b'\x04\xd2'

In [3]: b = bytearray(a.to_bytes(2, 'big'))

In [4]: b[0]
Out[4]: 4

In [5]: b[1]
Out[5]: 210
使用
>H
; Python 2中的示例:

>>> import struct
>>> a = 1234
>>> s = struct.pack('>H', a)
然后你打开它

>>> first, second = struct.unpack('>BB', s)
>>> first
4
>>> second
210

如果您使用的是Python 3,则可以使用
来读取字节数

In [1]: a = 1234

In [2]: a.to_bytes(2, 'big')
Out[2]: b'\x04\xd2'

In [3]: b = bytearray(a.to_bytes(2, 'big'))

In [4]: b[0]
Out[4]: 4

In [5]: b[1]
Out[5]: 210

我认为简短地描述这两种格式是一个优点。嘿,我试过这样做,当我将这个struct命令附加到一个变量并打印它时,我得到的是一张奇怪的图片,而不是“\x0d\xd2”。此外,我希望以2字节的形式接收输出。。0x04和0xD2可以在
struct
模块的官方文档中找到简短的描述,我在其中添加了一个链接。真正的解释需要一堂重要的历史课。:-)@Wannabetter结构包的输出是一个字节字符串。如果你打印出来,结果将取决于你的终端设置。嘿,你所有的帖子都使用终端,而不是编写代码。此外,您提供的格式是“编辑”字符串(0x{:04x}')。我希望得到2个十六进制字节输出的最终结果。我不知道如何使用这种“手动”格式。我认为简要描述这两种格式是一个优点。嘿,我试过这样做,当我将此struct命令附加到变量并打印时,我得到的是一张奇怪的图片,而不是“\x0d\xd2”。此外,我希望以2字节的形式接收输出。。0x04和0xD2可以在
struct
模块的官方文档中找到简短的描述,我在其中添加了一个链接。真正的解释需要一堂重要的历史课。:-)@Wannabetter结构包的输出是一个字节字符串。如果你打印出来,结果将取决于你的终端设置。嘿,你所有的帖子都使用终端,而不是编写代码。此外,您提供的格式是“编辑”字符串(0x{:04x}')。我希望得到2个十六进制字节输出的最终结果。我不知道如何使用这种“手动”格式。