Ответ 1
byte
является подписанным типом. Его значения находятся в диапазоне от -128 до 127; 144 не находится в этом диапазоне. В Java нет беззнакового байтового типа.
Если вы используете Java 8, способ рассматривать это как значение в диапазоне от 0 до 255, это использовать Byte.toUnsignedInt
:
String output = String.format("%x", Byte.toUnsignedInt(myByte));
(Я не знаю, как вы отформатировали целое число для шестнадцатеричного вывода. Это не имеет значения.)
Pre-Java 8, самый простой способ -
int byteValue = (int)myByte & 0xFF;
String output = String.format("%x", byteValue);
Но прежде чем вы сделаете это, убедитесь, что вы действительно хотите использовать byte
. Скорее всего, вам не нужно. И если вы хотите представить значение 144, вам не следует использовать byte
, если вам это не нужно. Просто используйте int
.