2016-01-18 38 views
0

我在讀一個二進制文件,這裏是我在byte1代表和byte2
byte是一個列表的Python - 變量的類型給出了不同的答案

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) 

但是兩個字節,當我看到輸出,無論是值1和值2給出不同的類型,而應該顯示相同。

輸出:

<type 'tuple'> 
<type 'int'> 

我缺少什麼?

謝謝。

回答

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] 
+0

哦,我的上帝! Python很棒。 –

+0

謝謝,我明白了。 –

相關問題