簡體   English   中英

將字符串解釋為打包的二進制數據,Python與Java

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM