Получите два нижних байта из переменной int

У меня есть некоторые данные в переменных int в Java (диапазон от 0 до 64000). Как преобразовать в это целое число? Мне нужно всего два нижних байта от int (диапазон в порядке). Как извлечь это?

Ответ 1

Вы можете получить младший байт из целого числа с помощью ANDing с помощью 0xFF:

byte lowByte = (byte)(value & 0xFF);

Это работает, потому что 0xFF имеет нулевые биты везде над первым байтом.

Чтобы получить второй-младший байт, вы можете повторить этот трюк после смещения всех бит в пятнах числа 8:

byte penultimateByte = (byte)((value >> 8) & 0xFF);

Ответ 2

Вам не нужно выполнять операцию AND, чтобы получить нижний байт, просто отбросив его в байт и получив младший байт в байтовой переменной.

попробуйте следовать за обоими, даст вам тот же результат

short value = 257;
System.out.println(value);
byte low = (byte) value;
System.out.println("low: " + low);
byte high = (byte)(value >> 8);
System.out.println("high: " + high);

value = 257;
System.out.println(value);
low = (byte) (value & 0xFF);
System.out.println("low: " + low);
high = (byte) ((value >> 8) & 0xFF);
System.out.println("high: " + high);

или попробуйте на Ideone.com