Convertir Hex en ASCII en Java

1. Vue d'ensemble

Dans cet article rapide, nous allons faire 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 à Hex

Maintenant, regardons nos options pour convertir les valeurs ASCII en Hex:

  1. Convertir une chaîne en tableau de caractères
  2. Fonte chaque carbonisation à un int
  3. Utilisez Integer.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, faisons une conversion au format Hex vers ASCII en trois étapes:

  1. Couper la valeur Hex dans 2 ombles groupes
  2. Convertissez-le en un entier de base 16 en utilisant Integer.parseInt (hex, 16) et transtypez en char
  3. Ajouter tous les caractères dans un StringBuilder

Regardons un exemple comment 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.baeldung.com"; String hexEquivalent = "7777772e6261656c64756e672e636f6d"; assertEquals(asciiString, hexToAscii(hexEquivalent)); } @Test public static void whenAsciiToHex() { String asciiString = "www.baeldung.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 se trouve dans le projet github - importez simplement le projet et exécutez-le tel quel.