So che è possibile utilizzare printf
e utilizzare anche StringBuilder.append(String.format("%x", byte))
per convertire valori in valori HEX e visualizzarli sulla console. Ma voglio essere in grado di formattare effettivamente l'array di byte in modo che ogni byte sia visualizzato come HEX anziché decimale.Come convertire l'array di byte in formato esadecimale in Java
Qui è una sezione del mio codice che ho già che fa le prime due modi che ho affermato:
if(bytes > 0)
{
byteArray = new byte[bytes]; // Set up array to receive these values.
for(int i=0; i<bytes; i++)
{
byteString = hexSubString(hexString, offSet, CHARSPERBYTE, false); // Isolate digits for a single byte.
Log.d("HEXSTRING", byteString);
if(byteString.length() > 0)
{
byteArray[i] = (byte)Integer.parseInt(byteString, 16); // Parse value into binary data array.
}
else
{
System.out.println("String is empty!");
}
offSet += CHARSPERBYTE; // Set up for next word hex.
}
StringBuilder sb = new StringBuilder();
for(byte b : byteArray)
{
sb.append(String.format("%x", b));
}
byte subSystem = byteArray[0];
byte highLevel = byteArray[1];
byte lowLevel = byteArray[2];
System.out.println("Byte array size: " + byteArray.length);
System.out.printf("Byte 1: " + "%x", subSystem);
System.out.printf("Byte 2: " + "%x", highLevel);
System.out.println("Byte 3: " + lowLevel);
System.out.println("Byte array value: " + Arrays.toString(byteArray));
System.out.println("Byte array values as HEX: " + sb.toString());
}
else
{
byteArray = new byte[0]; // No hex data.
//throw new HexException();
}
return byteArray;
La stringa che è stata suddivisa in di byte era:
"1E2021345A2B"
ma visualizza come decimale sulla console come:
"303233529043"
qualcuno potrebbe aiutarmi su come ottenere i valori effettivi in esadecimale e visualizzarli in questo modo in modo naturale. Grazie in anticipo.
Perché non basta chiamare Integer.parseInt (sb.ToString(), 16)? – Luke