Conversão Hex para ASCII em Java
1. Visão geral
Neste artigo rápido, faremos algumas conversões simples entre os formatos Hex e ASCII.
Em um caso de uso típico, o formato Hex pode ser usado para escrever valores inteiros muito grandes em uma forma compacta. Por exemplo, AD45 é menor que seu equivalente decimal 44357 e, à medida que os valores aumentam, a diferença de comprimento se torna ainda mais acentuada.
2. ASCII para Hex
Agora, vamos dar uma olhada em nossas opções para converter valores ASCII em Hex:
-
Converter String em matriz de caracteres
-
Lance cadachar para umint
-
UseInteger.toHexString() para convertê-lo em hexadecimal
Aqui está um exemplo rápido de como podemos alcançar as etapas acima:
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 Hex para ASCII
Da mesma forma, vamos fazer uma conversão do formato Hex para ASCII em três etapas:
-
Corte o valor Hex em grupos de 2char
-
Converta-o para inteiro de base 16 usandoInteger.parseInt(hex, 16)e lance parachar
-
Anexar todos os caracteres em umStringBuilder
Vejamos um exemplo de como podemos alcançar as etapas acima:
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
Finalmente, usando esses métodos, vamos fazer um teste rápido:
@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. Conclusão
Para concluir, examinamos as maneiras mais simples de converter entre ASCII e Hex usando Java.
A implementação de todos esses exemplos e trechos de código pode ser encontradain the github project - basta importar o projeto e executar como está.