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:
-
Convertir une chaîne en tableau de caractères
-
Convertir chaquechar enint
-
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:
-
Couper la valeur hexadécimale en groupes de 2char
-
Convertissez-le en entier de base 16 en utilisantInteger.parseInt(hex, 16) et transtypez-le enchar
-
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.