2009-05-28 64 views
3

在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) 

有没有更好的方法?

+0

你能告诉我们为什么你需要字节缓冲区作为一个python整数? – Unknown 2009-05-28 01:48:52

+0

我通常从二进制数据包流中提取值。 – 2009-05-28 01:51:47

+0

那么整数值是有界的还是无界的呢? – Unknown 2009-05-28 01:56:07

回答

2

一定到1个字节 - 诺阿坎贝尔18分钟前

做到这一点的话,最好的方法就是实例化一个结构解包。

from struct import Struct 

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

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

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

5

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

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

如果我们谈论的是得到一个字节的整数值,那么你想这样的:

ord(byte_buffer) 

不明白为什么它不被建议。

相关问题