考虑 Python 字节中的第 8 位来生成正整数

Consider 8th Bit in Python Byte to make Postive Integer

我正在开发一个 Python 应用程序,它从二进制文件中读取数据,提取一个字节,然后引用一个列表。这基本上就是我正在做的。

list = [x for x in range(0, 340)]

index = struct.unpack('<b', file.read(1))

print(list[index])

问题是我正在读取的文件,第 8 位表示正值,而不是使数字为负数。例如,我希望将 b'11111111' 读作 255 而不是它产生的负数。我不熟悉 struct 模块,不确定我在使用该模块时是否做错了什么,或者它是否是 Python 的一个特性,我不确定如何为其创建解决方法。

对于无符号字符,您希望使用 B 格式字符,而不是 b(请参阅 struct 模块文档中的 Format Characters 部分。因为unpack() 总是 returns 值的元组,即使格式字符串只指定了一个值,也可以将 [0] 添加到表达式的末尾,如图所示,以检索第一个且唯一的值元素.

>>> index = struct.unpack('<B', bytearray([0b11111111,]))[0]
>>> print(index)
255