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