读取3个字节作为整数

MxL*_*evs 12 python

如何读取3个字节作为整数?

struct module是否提供类似的东西?

我可以读取3个字节并添加一个额外的\ x00,然后将其解释为4字节整数,但这似乎是不必要的.

unu*_*tbu 14

struct模块没有3字节整数的选项,所以我认为你追加'\ x00'的想法是最简单的方法.

In [30]: import struct
In [38]: struct.pack('>3b',0,0,1)
Out[38]: '\x00\x00\x01'

In [39]: struct.unpack('>i','\x00'+'\x00\x00\x01')
Out[39]: (1,)
Run Code Online (Sandbox Code Playgroud)


Jon*_*nts 12

我想从3.2 int开发了一种新方法.from_bytes,所以你可以使用以下代替struct.unpack:

int.from_bytes(b'\x00\x00\x01', 'big')  
# 1
Run Code Online (Sandbox Code Playgroud)

供参考,请参阅:http://docs.python.org/dev/library/stdtypes.html#int.from_bytes