我讀取一個二進制文件並獲取一個包含字符的數組。當將兩個字節轉換爲整數時,我做256*ord(p1) + ord(p0)
。它對正整數正常工作,但當我得到一個負數時它不起作用。我知道在最重要的字節中有第一個字節,但沒有成功。將二進制數據轉換爲有符號整數
我也知道有個東西叫struct
和閱讀後,我結束了與下面的代碼
import struct
p1 = chr(231)
p0 = chr(174)
a = struct.unpack('h',p0+p1)
print str(a)
a
變爲-6226,如果我換p0
和p1
我得到-20761。
a
應該是-2
由於這些已經是8位數量,屏蔽掉較低的8位不會做任何事情。 – kindall
要屏蔽符號位,您可以使用'&0x7F',否? – 2011-10-18 19:12:18
@ kindall,原始問題談到負數。負數是符號擴展的,所以高位包含「1」而不是「0」,因此掩蓋它們變得必要。我仍然不確定'ord'如何返回一個負數。 –