Comment convertir un tableau d'octets au format hexadécimal en Java

Je sais que vous pouvez utiliser printf et également utiliser StringBuilder.append(String.format("%x", byte)) pour convertir des valeurs en valeurs hexadécimales et les afficher sur la console. Mais je veux être en mesure de réellement format du tableau d'octets, de sorte que chaque octet est affiché comme HEX au lieu de la virgule.

Voici une partie de mon code que j'ai déjà qui ne le premier de deux façons, j'ai dit:

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 chaîne qui a éclaté dans le tableau d'octets a été:

"1E2021345A2B"

Mais les affiche en décimal sur la console:

"303233529043"

Quelqu'un pourrait-il m'aider sur la façon d'obtenir les valeurs réelles pour être en hexadécimal et en être affichés dans la façon naturelle. Je vous remercie à l'avance.

Pourquoi ne pas simplement appeler Entier.parseInt(sb.toString(), 16) ?

OriginalL'auteur James Meade | 2013-10-18