我需要將2字節數組(byte [2])轉換爲java中的整數值。我怎樣才能做到這一點?Java:將字節轉換爲整數
回答
您可以使用ByteBuffer
此:
ByteBuffer buffer = ByteBuffer.wrap(myArray);
buffer.order(ByteOrder.LITTLE_ENDIAN); // if you want little-endian
int result = buffer.getShort();
那麼,每個字節是一個在-128..127範圍內的整數,所以你需要一種方法將一對整數映射到一個整數。有很多方法可以做到這一點,這取決於你在這對字節中編碼的內容。最常見的是將一個16位有符號整數存儲爲一對字節。轉換是回到一個整數取決於你是否保存其大端形式:
(byte_array[0]<<8) + (byte_array[1] & 0xff)
或小尾數:
(byte_array[1]<<8) + (byte_array[0] & 0xff)
在Java中,字節簽署,這意味着一個字節的值可以爲負,當發生這種情況時,@ MattBall的原始解決方案將無法工作。
例如,如果字節陣列的二進制形式是這樣的:
然後myArray的[0]是1000 1101
和myArray的[1]是1000 1101
,字節1000 1101
的十進制值是-115
而不是141(= 2^7 + 2^3 + 2^2 + 2^0)
如果我們使用
int result = (myArray[0] << 8) + myArray[1]
該值將是-16191
這是錯誤的。
之所以它的錯誤是,當我們解釋一個2字節數組轉換成整數,所有的字節 無符號的,所以翻譯時,我們應該映射符號字節爲無符號整數:
((myArray[0] & 0xff) << 8) + (myArray[1] & 0xff)
結果是36237
,使用計算器或ByteBuffer來檢查它是否正確(我已經完成了它,是的,它是正確的)。
非常感謝您的解釋:) – shadygoneinsane 2017-08-24 13:15:25
另外,如果你可以使用番石榴庫:
Ints.fromByteArray(0, 0, myArray[1], myArray[0]);
這是值得一提,因爲很多項目無論如何使用它。
只要做到這一點:
return new BigInteger(byte[] yourByteArray).intValue();
藍牙命令轉換偉大工程等等。沒有必要擔心簽訂無符號與轉換。
- 1. 將整數轉換爲字節
- 2. 將整數轉換爲字節
- 3. 將2個字節轉換爲整數
- 4. 將字節轉換爲整數
- 5. 將5個字節轉換爲整數
- 6. SqlDataReader將字節轉換爲整數vb.net
- 7. 將字節轉換爲短或整數
- 8. Java - 將音頻的字節數組轉換爲整數數組
- 9. 字節轉換爲整數,然後轉換爲Java中的字符串轉換
- 10. 將字節數組轉換爲.wav java
- 11. java - 將字節轉換爲整數 - 爲什麼AND每個字節與0xff?
- 12. Java將字符串轉換爲整數
- 13. 將整數轉換爲java中的字節
- 14. 將字節轉換爲整數時的問題(Java特定?)
- 15. 將Java字節數組轉換爲Python字節數組
- 16. 如何將Java字節數組轉換爲Scala字節數組?
- 17. 將雙字節整數轉換爲單字節-Javascript
- 18. Java - 將字節[]轉換爲字符串
- 19. 將Java字符串轉換爲16字節的字節數組
- 20. Python,將整型轉換爲字節。
- 21. 轉換字節數組爲整數
- 22. 將Ruby字符串轉換爲整數數組的字節?
- 23. 將整數轉換爲字符數組(字節)
- 24. 整數到字節轉換
- 25. 將一個節點轉換爲整數
- 26. 字節轉換爲整數Python中
- 27. Java將int隱式轉換爲字節
- 28. Java將長轉換爲4字節
- 29. 將int轉換爲java中的字節
- 30. char轉換爲字節? (JAVA)
這個問題可以使用一些說明。就目前而言,我們只會看到您選擇的答案的含義。 – 2010-12-20 18:45:15