1. Información general
En este artículo rápido, haremos algunas conversiones simples entre los formatos Hex y ASCII.
En un caso de uso típico, el formato Hex se puede utilizar para escribir valores enteros muy grandes en una forma compacta. Por ejemplo, AD45 es más corto que su equivalente decimal 44357 y, a medida que los valores aumentan, la diferencia de longitud se vuelve aún más pronunciada.
2. ASCII a Hex
Ahora, veamos nuestras opciones para convertir valores ASCII a Hex:
- Convertir cadena en matriz de caracteres
- Lanzar cada char a un int
- Utilice Integer.toHexString () para convertirlo a Hex
Aquí hay un ejemplo rápido de cómo podemos lograr los pasos anteriores:
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. Formato hexadecimal a ASCII
De manera similar, hagamos una conversión de formato Hex a ASCII en tres pasos:
- Cortar el valor Hex en 2 carbonilla grupos
- Conviértalo a base 16 Integer usando Integer.parseInt (hex, 16) y cámbielo a char
- Agregar todos los caracteres en un StringBuilder
Veamos un ejemplo de cómo podemos lograr los pasos anteriores:
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. Prueba
Finalmente, usando estos métodos, hagamos una prueba rápida:
@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. Conclusión
Para concluir, analizamos las formas más simples de convertir entre ASCII y Hex usando Java.
La implementación de todos estos ejemplos y fragmentos de código se puede encontrar en el proyecto github; simplemente importe el proyecto y ejecútelo como está.