2016-10-05 2 views
-2

Я работаю с java.nio в Java 8. Я получаю unsigned int внутри буфера, и я хочу сохранить его как таковой, но я получаю отрицательное число.ByteBuffer parse unsigned int

final int shouldBePositive = buffer.getInt(); 

и shouldBePositive отрицательный.

Есть ли способ обойти факт, что у Java нет неподписанного типа int?

+0

«Я хочу его сохранить», что именно это означает? Если вы хотите преобразовать его в String, вы можете использовать 'Integer.toUnsignedString'. – Alex

+0

Да, есть способ обойти этот факт. Однако это некрасиво. –

ответ

2

Помимо простого проживания с этим, вы всегда можете использовать тип long и ограничить использование вами наименее значимых 32 бит.

Это будет модель 32-битного неподписанного интегрального типа.

Для более длинных неподписанных типов вам необходимо установить решение на java.math.BigInteger.

+0

У меня есть другие сценарии для unsigned long, а также. Так что это все равно не помогает мне. – slashms

+0

В этом случае используйте 'Long.toUnsignedString()', как предложил Алекс. Если для вас ничего не работает, вам придется разработать свой собственный метод; вы всегда можете получить необработанные (подписанные) байты из 'ByteBuffer'. –

Смежные вопросы