有没有比 int( byte_buffer.encode('hex'), 16 ) 更好的方法?

3 投票
3 回答
2755 浏览
提问于 2025-04-15 11:52

在Python中,我经常使用以下方法从字节缓冲区中获取一个整数值(在Python中,这个字节缓冲区是一个字符串)。

我通过struct.unpack()这个函数来获取这个缓冲区。当我用下面的方式解包一个'char'时:

byte_buffer, = struct.unpack('c', raw_buffer)
int_value = int( byte_buffer.encode('hex'), 16 )

有没有更好的方法呢?

3 个回答

1

如果我们在讨论如何获取一个字节的整数值,那么你需要这个:

ord(byte_buffer)

我不明白为什么之前没有人提过这个。

6

struct模块擅长处理二进制数据的解包。

int_value = struct.unpack('>I', byte_buffer)[0]
2

限制为1字节 - Noah Campbell 18分钟前

最好的方法是创建一个结构体解包器。

from struct import Struct

unpacker = Struct("b")
unpacker.unpack("z")[0]

注意,如果你想要无符号字节,可以把“b”改成“B”。另外,字节序格式是不需要的。

如果还有其他人想知道处理不限制整数的方法,可以提问,并在评论里告诉我。

撰写回答