我正在阅读二进制文件,这是我在byte1
和byte2
中表示的两个字节
byte
是一个列表
byte1 = byte[i]
byte2 = byte[i+1]
value1 = struct.unpack('B',byte1)[0], #this will be integer
value2 = struct.unpack('B',byte2)[0]
print type(value1)
print type(value2)
但是当我看到输出时,value1和value2都给出了不同的类型,而应该显示相同的。
输出:
<type 'tuple'>
<type 'int'>
我错过了什么?
谢谢。
答案 0 :(得分:4)
行尾有逗号:
value1 = struct.unpack('B', byte1)[0], #this will be integer
# ^
逗号将右侧变为元组。考虑:
>>> a = 1,
>>> type(a)
<type 'tuple'>
>>> a = 'foo',
>>> type(a)
<type 'tuple'>
在每种情况下,由于尾随逗号,表达式的计算结果为tuple
。您发布的代码段也是如此。
要获得一个整数,只需删除逗号即可:
value1 = struct.unpack('B', byte1)[0]