Конвертировать singed int в uint в Java - PullRequest
0 голосов
/ 05 ноября 2018

Я работаю со сторонним сервером, который принимает входные аргументы. Однако при запросе значения, которое я написал снова, кажется, что в качестве знака используется самый левый бит числа, поэтому 1000 ... 0 (16 бит) будет возвращено как -32768, 11000 ... 0 будет -16384 и т. Д.

Учитывая, что Java не знает uints, я ищу эффективный способ превратить мое отрицательное число в правильное положительное число (первое из которых 2 ^ 15, второе - 2 ^ 15 + 2 ^ 24 и т. д.).

1 Ответ

0 голосов
/ 05 ноября 2018

Для 16-битных значений без знака вы можете маскировать старшие биты

x &= 0xFFFF;

Для 32-битных значений без знака вы можете использовать длинную

long l = x & 0xFFFFFFFFL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...