考虑使用Python Byte中的第8位来生成正整数

时间:2015-01-29 02:49:48

标签: python bit-manipulation negative-number

我正在研究一个从二进制文件读取的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的一个功能,我不知道如何为其创建变通方法。

1 个答案:

答案 0 :(得分:2)

对于无符号字符,您需要使用B格式字符,而不是b(请参阅struct模块文档中的Format Characters部分。自{{ 1}}总是返回一个值元组,即使格式字符串只指定了一个元素,也可以将unpack()添加到表达式的末尾,如图所示,以检索第一个也是唯一的元素。

[0]