有没有比 int( byte_buffer.encode('hex'), 16 ) 更好的方法?
在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”。另外,字节序格式是不需要的。
如果还有其他人想知道处理不限制整数的方法,可以提问,并在评论里告诉我。