2016-10-05 68 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”获取原始(签名)字节。 –