2
我正在對塊大小爲4字節的塊執行按位操作。我已經使用ByteBuffer將4個字節的塊轉換爲4個字節的整數來執行此操作。Java - Casting Int到字節 - 奇數結果
一旦完成,我需要將它們轉換回字節。使用ByteBuffer,我正在執行此操作。下面是一些示例代碼,數據,突顯我的困惑:
int a = 1610612739; //simulate casting the 4-byte block 60 00 00 03
ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(a);
byte[] b1 = (b.array());
現在,這個代碼後,我希望b1
持有如下:
b1[0]: 60
b1[1]: 00
b1[2]: 00
b1[3]: 03
但是,這不是發生了什麼。相反,我得到
b2[0]: 96
b2[1]: 0
b2[2]: 0
b2[3]: 3
我的樣品整數,二進制,應該是::
0110 0000 0000 0000 0000 0000 0000 0011
其中最左邊位是符號。
和96 00 00 03
十進制是2,516,582,403
,它位於Java的32位int範圍之外。
有誰知道發生了什麼事?
這是因爲'96 == 0x60'。 (提示:刪除的問題,而不是太多的人看到它:-) – dasblinkenlight
+1思維太複雜。^_^ – Dawnkeeper
經過多年的編程,您可以獲得這些列表。從忘記複製一個DLL,並想知道爲什麼沒有什麼變化,多次閱讀一些代碼,並錯過了一個錯誤,大學立即用分號結束一個if語句。它發生了。 – Dawnkeeper