在Python字节中考虑第八位以生成正整数

在Python字节中考虑第八位以生成正整数,python,bit-manipulation,negative-number,Python,Bit Manipulation,Negative Number,我正在开发一个Python应用程序,它读取二进制文件,提取一个字节,然后引用一个列表。这就是我正在做的 list = [x for x in range(0, 340)] index = struct.unpack('<b', file.read(1)) print(list[index]) list=[x代表范围内的x(0340)] index=struct.unpack(“对于无符号字符,您希望使用B格式字符,而不是B(请参阅struct模块文档中的部分。由于unpack()始终

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

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

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

print(list[index])
list=[x代表范围内的x(0340)]

index=struct.unpack(“对于无符号字符,您希望使用
B
格式字符,而不是
B
(请参阅
struct
模块文档中的部分。由于
unpack()
始终返回一个值元组,即使格式字符串只指定一个值,a
[0]
可以添加到表达式的末尾,如图所示,以检索第一个也是唯一一个元素

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

>index=struct.unpack(“看看-
b
是有符号的”
-
b
是无符号的…还有-当您只有256个值可以索引时,在
列表中有340个元素有什么意义呢?”抱歉,我的示例代码不是很好/完整。基本上,文件前面有一个检查,如果为True,请读取两个字节以获取索引x、 而不仅仅是1。我还要问一个noob问题:如果我理解正确的话,有符号字符意味着第8位是负标志,而无符号意味着它不是负标志?@几乎:是的,基本上。实际上有符号字符是-127到+127范围内的符号位+7值位。参见。
unpack
的输出是元组。而不是t如果要将其转换为列表,您可能只需要获取第一个元素:
struct.unpack(…)[0]
@Mark:Good point,我以为我只是用与OP-code相同的术语表示结果,但现在看到他们使用了
print([index])
,这将产生
[(255,)]
——因此我将更新我的答案。