在Python中使用字节和二进制数据

3 python binary byte

字节串中的四个连续字节一起指定一些值.但是,每个字节只使用7位; 最高有效位始终为零,因此忽略它(总共产生28位).所以...

b"\x00\x00\x02\x01"
Run Code Online (Sandbox Code Playgroud)

会的000 0000 000 0000 000 0010 000 0001.

或者,为了易读性,10 000 0001.这是四个字节代表的值.但我想要一个小数,所以我这样做:

>>> 0b100000001
257
Run Code Online (Sandbox Code Playgroud)

我可以自己完成所有这些工作,但是我如何将它合并到一个程序中呢?

Mar*_*ers 7

使用位移和添加:

bytes = b"\x00\x00\x02\x01"
i = 0
for b in bytes:
    i <<= 7
    i += b     # Or use (b & 0x7f) if the last bit might not be zero.
print(i)
Run Code Online (Sandbox Code Playgroud)

结果:

257
Run Code Online (Sandbox Code Playgroud)