Делить на 100 определенно неправильно, это должно быть 256, а не 100.
Однако вам не нужно делать все это.
private static byte getYLHeight(int height) {
return (byte) height;
}
private static byte getYHHeight(int height) {
return (byte) (height >>> 8);
}
Чтобы напечатать byte
значения в шестнадцатеричном и десятичном виде, используйте printf
:
System.out.printf("YL: hex=%1$02x, decimal=%1$d%n", Byte.toUnsignedInt(hw.getYLHeight(400)));
System.out.printf("YH: hex=%1$02x, decimal=%1$d%n", Byte.toUnsignedInt(hw.getYHHeight(400)));
Выход
YL: hex=90, decimal=144
YH: hex=01, decimal=1
ОБНОВЛЕНИЕ
Если вы хотите, чтобы методы возвращали String
с шестнадцатеричным представлением 2-ди git значения byte
, сделайте это вместо:
private static String getYLHeight(int height) {
return String.format("%02x", height & 0xFF);
}
private static String getYHHeight(int height) {
return String.format("%02x", (height >>> 8) & 0xFF);
}
Test
System.out.println("YL - " + hw.getYLHeight(400));
System.out.println("YH - " + hw.getYHHeight(400));
Выход
YL - 90
YH - 01