我掙扎了一下,在Java和Python二進制翻譯程序解釋字符串作爲打包的二進制數據的Python和Java
在當我執行下面的命令蟒蛇,我已經得到了
>>> print ord(pack('>H', 32809)[0])
128
>>> print ord(pack('>H', 32809)[1])
41
在Java中,我希望有相同的結果,當我執行下面的命令,但它不存在:
bsh % print ((byte)((32809 & 0xFF00) >> 8));
-128
bsh % print ((byte)(32809 & 0x00FF));
41
有人可以解釋我爲什麼128是負在Java中? 非常感謝。
是否意味着(字節)128 = -128? – art1go
是的。從127「增加」 - 127的位模式是0x7F;加一個給出0x80;解釋爲有符號的字節,這是-128。有符號字節中沒有足夠的位來正確表示+128。 –