У меня есть массив short, значения которого находятся в диапазоне от 0 до максимального значения short. Я масштабирую данные (чтобы отобразить их как TYPE_USHORT), чтобы полученные короткие значения находились в диапазоне от 0 до 65535. Мне нужно напечатать некоторые масштабированные значения, но не могу понять, как это сделать. Данные находятся в массиве и в BufferedImage.
Как напечатать короткий как unsigned short в Java
Ответ 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))