将int转换为2字节的BigEndian

2024-09-30 16:31:59 发布

您现在位置:Python中文网/ 问答频道 /正文

将int转换为2个十六进制字节的Big-Endian编码有问题。

例如:

import struct

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

我得到的是:

'\x00\x00\x04\xd2'

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

'0x04', '0xd2'

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

接收大端编码整数的2字节十六进制值的正确方法是什么?

谢谢


Tags: 方法import编码字节整数struct技术pack
1条回答
网友
1楼 · 发布于 2024-09-30 16:31:59

使用>Hformat string; Python 2中的示例:

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

然后你打开它

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

如果您使用的是Python 3,则可以使用to_bytes

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

相关问题 更多 >