Как напечатать короткий как неподписанный короткий в Java - PullRequest
15 голосов
/ 01 июля 2010

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

Ответы [ 2 ]

28 голосов
/ 01 июля 2010

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

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

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

15 голосов
/ 19 июня 2016

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

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