Подтвердить что ты не робот

Как напечатать короткий как unsigned short в Java

У меня есть массив short, значения которого находятся в диапазоне от 0 до максимального значения short. Я масштабирую данные (чтобы отобразить их как TYPE_USHORT), чтобы полученные короткие значения находились в диапазоне от 0 до 65535. Мне нужно напечатать некоторые масштабированные значения, но не могу понять, как это сделать. Данные находятся в массиве и в BufferedImage.

4b9b3361

Ответ 1

Самый простой способ - преобразовать в int:

short s = ...;
int i = s & 0xffff;

Бит-маска состоит в том, чтобы преобразование давало значение в диапазоне 0-65535, а не -32768-32767.

Ответ 2

Начиная с Java 1.8, то же самое можно сделать с помощью Short.toUnsignedInt:

System.out.println("signed s=" + s + ", unsigned s=" + Short.toUnsignedInt(s))