2016-10-05 76 views
-2

我正在Java 8中使用java.nio。 我在緩衝區中收到一個unsigned int,我想將它保存爲這樣,但我得到一個負數。ByteBuffer解析unsigned int

final int shouldBePositive = buffer.getInt(); 

andBeBePositive is negative。

有沒有辦法解決這個事實Java沒有unsigned int類型?

+0

「我想保存它」究竟是什麼意思?如果你想將它轉換爲字符串,你可以使用'Integer.toUnsignedString'。 – Alex

+0

是的,有一種方法可以解決這個問題。儘管如此,它並不漂亮。 –

回答

2

除了簡單的生活,你總是可以使用long類型,並將你的使用限制爲最不重要的32位。

這將建模一個32位無符號整型。

對於較長的未簽名類型,您需要基於java.math.BigInteger解決方案。

+0

我還有其他一些unsigned long的情況。所以這仍然不能幫助我。 – slashms

+0

在這種情況下,按照Alex的建議使用'Long.toUnsignedString()'。如果沒有別的東西適合你,你將不得不開發自己的方法;您總是可以從「ByteBuffer」獲取原始(簽名)字節。 –