3

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

我从 struct.unpack() 例程中获取缓冲区。当我使用解压“char”时

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

有没有更好的办法?

4

3 回答 3

6

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

int_value = struct.unpack('>I', byte_buffer)[0]
于 2009-05-28T01:21:52.697 回答
2

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

最好的方法是实例化一个结构解包器。

from struct import Struct

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

请注意,如果您想要一个无符号字节,您可以将“b”更改为“B”。此外,不需要字节序格式。

对于任何想了解无界整数方法的人,请创建一个问题,并在评论中告诉我。

于 2009-05-28T02:36:26.833 回答
1

如果我们谈论的是获取一个字节的整数值,那么你想要这个:

ord(byte_buffer)

不明白为什么还没有建议。

于 2009-05-28T20:40:11.347 回答