Как распечатать байты в шестнадцатеричном формате, используя System.out.println? - PullRequest
31 голосов
/ 17 ноября 2009

Я объявил байтовый массив (я использую Java):

byte test[] = new byte[3];
test[0] = 0x0A;
test[1] = 0xFF;
test[2] = 0x01;

Как можно распечатать разные значения, хранящиеся в массиве?

Если я использую System.out.println (test [0]), он выведет «10». Я хотел бы, чтобы это напечатало 0x0A

Спасибо всем!

Ответы [ 3 ]

61 голосов
/ 17 ноября 2009
System.out.println(Integer.toHexString(test[0]));

ИЛИ (красивая печать)

System.out.printf("0x%02X", test[0]);

ИЛИ (красивая печать)

System.out.println(String.format("0x%02X", test[0]));
8 голосов
/ 17 ноября 2009
for (int j=0; j<test.length; j++) {
   System.out.format("%02X ", test[j]);
}
System.out.println();
3 голосов
/ 17 ноября 2009
byte test[] = new byte[3];
test[0] = 0x0A;
test[1] = 0xFF;
test[2] = 0x01;

for (byte theByte : test)
{
  System.out.println(Integer.toHexString(theByte));
}

ПРИМЕЧАНИЕ: тест [1] = 0xFF; это не скомпилируется, вы не можете поместить 255 (FF) в байт, java захочет использовать int.

вы могли бы сделать ...

test[1] = (byte) 0xFF;

Я бы проверил, был ли я рядом со своей IDE (если бы я был рядом со своей IDE, я бы не был в Stackoverflow)

...