python - 在 Python 中处理字节和二进制数据

标签 python binary byte

字节串中的四个连续字节共同指定了某个值。但是,每个字节只使用了 7 位;最高有效位始终为零,因此被忽略(总共 28 位)。所以……

b"\x00\x00\x02\x01"

将是 000 0000 000 0000 000 0010 000 0001

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

>>> 0b100000001
257

我可以自己解决所有这些问题,但我如何将其整合到程序中呢?

最佳答案

使用位移和加法:

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)

结果:

257

关于python - 在 Python 中处理字节和二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2587438/

相关文章:

java - 如何截断 java 整数以适应/扩展到给定的字节数?

python - 如果Python中的函数发生错误,有什么方法可以访问变量的值吗?

java - 整数解析不适用于将二进制转换为十进制

python - 子进程登录到远程主机而不是在 python 中出现

linux - 如何在终端上将二进制文本转换为 ASCII?

java - Android ffmpgeg - 没有任何反应

java - Java 中 byte[] 和 List<Byte> 有什么区别?

java - Java输出值随时间的变化

python - selenium无法在知乎提交答案

python - 如何在python中使用正则表达式?