在Python中,我经常使用以下序列从字节缓冲区获取整数值(在python中,这是一个str) 。有没有比int更好的方法(byte_buffer.encode('hex'),16)
我从struct.unpack()例程中获取缓冲区。当我打开一个'字符'使用
byte_buffer, = struct.unpack('c', raw_buffer)
int_value = int(byte_buffer.encode('hex'), 16)
有没有更好的方法?
在Python中,我经常使用以下序列从字节缓冲区获取整数值(在python中,这是一个str) 。有没有比int更好的方法(byte_buffer.encode('hex'),16)
我从struct.unpack()例程中获取缓冲区。当我打开一个'字符'使用
byte_buffer, = struct.unpack('c', raw_buffer)
int_value = int(byte_buffer.encode('hex'), 16)
有没有更好的方法?
一定到1个字节 - 诺阿坎贝尔18分钟前
做到这一点的话,最好的方法就是实例化一个结构解包。
from struct import Struct
unpacker = Struct("b")
unpacker.unpack("z")[0]
请注意,如果您想要一个无符号字节,您可以将“b”更改为“B”。另外,不需要endian格式。
对于任何想要了解无界整数方法的人,请创建一个问题,并在评论中告诉我。
struct模块擅长解开二进制数据。
int_value = struct.unpack('>I', byte_buffer)[0]
如果我们谈论的是得到一个字节的整数值,那么你想这样的:
ord(byte_buffer)
不明白为什么它不被建议。
你能告诉我们为什么你需要字节缓冲区作为一个python整数? – Unknown 2009-05-28 01:48:52
我通常从二进制数据包流中提取值。 – 2009-05-28 01:51:47
那么整数值是有界的还是无界的呢? – Unknown 2009-05-28 01:56:07