[英]getting the binary data represented by the hexadecimal string back in java vs python
[英]Interpret strings as packed binary data, Python vs Java
我在用Java和Python中的二進制文件來翻譯程序時有點掙扎
在python中,當我執行以下命令時,
>>> 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
有人可以解釋一下為什么Java中128為負數嗎? 非常感謝。
Java中的字節是一種有符號的數據類型-是的,我從來不明白他們為什么這么做。 您將需要使用short(好吧,因為所有位op都以int方式使用,實際上只是使用int),而忽略了更高的8bit(否則,符號擴展將是一個問題)
System.out.println(((short) ((32809 & 0xFF00) >> 8)) & 0xFF);
有符號字節的范圍為-128..127,因此(127 + 1)== -128
Java中將沒有未簽名的類型。 您可以考慮將其強制轉換為short或int。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.