Convertir Hex en ASCII en Java

Convertir Hex en ASCII en Java

1. Vue d'ensemble

Dans cet article rapide, nous allons effectuer quelques conversions simples entre les formats Hex et ASCII.

Dans un cas d'utilisation typique, le format Hex peut être utilisé pour écrire de très grandes valeurs entières sous une forme compacte. Par exemple, AD45 est plus court que son équivalent décimal 44357 et, à mesure que les valeurs augmentent, la différence de longueur devient encore plus prononcée.

2. ASCII en Hex

Voyons maintenant nos options pour convertir les valeurs ASCII en Hex:

  1. Convertir une chaîne en tableau de caractères

  2. Convertir chaquechar enint

  3. UtilisezInteger.toHexString() pour le convertir en hexadécimal

Voici un exemple rapide de la manière dont nous pouvons réaliser les étapes ci-dessus:

private static String asciiToHex(String asciiStr) {
    char[] chars = asciiStr.toCharArray();
    StringBuilder hex = new StringBuilder();
    for (char ch : chars) {
        hex.append(Integer.toHexString((int) ch));
    }

    return hex.toString();
}

3. Hex au format ASCII

De même, effectuons une conversion au format Hex vers ASCII en trois étapes:

  1. Couper la valeur hexadécimale en groupes de 2char

  2. Convertissez-le en entier de base 16 en utilisantInteger.parseInt(hex, 16) et transtypez-le enchar

  3. Ajouter tous les caractères dans unStringBuilder

Voyons un exemple de la manière dont nous pouvons réaliser les étapes ci-dessus:

private static String hexToAscii(String hexStr) {
    StringBuilder output = new StringBuilder("");

    for (int i = 0; i < hexStr.length(); i += 2) {
        String str = hexStr.substring(i, i + 2);
        output.append((char) Integer.parseInt(str, 16));
    }

    return output.toString();
}

4. Test

Enfin, en utilisant ces méthodes, faisons un test rapide:

@Test
public static void whenHexToAscii() {
    String asciiString = "www.example.com";
    String hexEquivalent =
      "7777772e6261656c64756e672e636f6d";

    assertEquals(asciiString, hexToAscii(hexEquivalent));
}

@Test
public static void whenAsciiToHex() {
    String asciiString = "www.example.com";
    String hexEquivalent =
      "7777772e6261656c64756e672e636f6d";

    assertEquals(hexEquivalent, asciiToHex(asciiString));
}

5. Conclusion

Pour conclure, nous avons examiné les moyens les plus simples de convertir entre ASCII et Hex en utilisant Java.

L'implémentation de tous ces exemples et extraits de code peut être trouvéein the github project - importez simplement le projet et exécutez-le tel quel.