2009-11-17 4 views
30

J'ai déclaré un tableau d'octets (j'utilise Java):Comment imprimer des octets en hexadécimal avec System.out.println?

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

Comment pourrais-je imprimer les différentes valeurs stockées dans le tableau? Si j'utilise System.out.println (test [0]), j'imprime '10'. Je voudrais qu'il imprime 0x0A

Merci à tout le monde!

Répondre

56
System.out.println(Integer.toHexString(test[0])); 

OU (pretty print)

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

OU (pretty print)

System.out.println(String.format("0x%02X", test[0])); 
+4

+1 pour donner l'exemple printf. –

+2

De tout cela, le 'System.out.printf' est probablement la meilleure idée. – abyx

+0

très utile, les pouces vers le haut –

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

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

NOTE: Test [1] = 0xFF; ce ne compilera pas, vous ne pouvez pas mettre 255 (FF) dans un octet, java voudra utiliser un int.

vous pourriez être en mesure de le faire ...

test[1] = (byte) 0xFF; 

je tester si j'étais près de mon IDE (si j'étais près de mon IDE je wouln't être sur Stackoverflow)

+0

Vous pouvez certainement faire octet b = 255 & 0xFF; Et puis lors de la lecture int calcul = (0xFF & b) + 5; à lire 255 –

7
for (int j=0; j<test.length; j++) { 
    System.out.format("%02X ", test[j]); 
} 
System.out.println(); 
Questions connexes