urgente!! gnt, boa tarde, entao eu tenho que pegar um texto em hexadecimal em um .txt e converter ele catacteres por exemplo: hexa: 030c01 20 0d150e040f21 converter para OLA MUNDO!Preciso urgentemente!! ja tentei de varias formas mas nao da certo!!!
Qual a lógica exatamente para transformar de hexa para texto?
Que formas você tentou?
O texto vem assim mesmo, com esses espaços (030c01 20 0d150e040f21)?
De qualquer forma, eu acho que está errado, pois “OLA MUNDO!”, ao ser convertido para bytes (assumindo que estamos falando da tabela ASCII) e formatado em hexa, ficaria 4f4c41204d554e444f21.
isso seria assim mensmo
usei
String hexa2 = null;
try {
Scanner scanner = new Scanner(new File(“C:\Programacao\hexa.txt”));
while (scanner.hasNext()) {
hexa2 = scanner.nextLine();
}
scanner.close();
} catch (IOException e) {
}
System.out.println();;
System.out.println();
String[] valuess = hexa2.split(" "); //seperar hexa
for (String value1 : valuess)
{
char c = (char) Integer.parseInt(value1, 16);
try (FileWriter arq2 = new FileWriter("C:\\Programacao\\novoAssembly.txt"))
{
PrintWriter gravarArq = new PrintWriter(arq2);
gravarArq.printf("%s",c);
}
}
Então, faltou responder qual é a lógica para transformar de hexa para letras.
Repare que no seu exemplo a letra O é representada por 03 em OLA e por 0f em MUNDO!
Tem que saber como a conversão funciona primeiro.
eu digitei o exemplo errado
Hum… digite o exemplo certo então!
E explique como fazer a conversão.
E como espera obter a resposta certa se o cenário apresentado está errado?
Posta o exemplo certo.
segue o exemplo:
Olá Mundo!=4f,6c,c3,a1,20,4d,75,6e,64,6f,21
Se os dados vem exatamente assim (separados por vírgulas), então uma forma de fazer seria:
String s = "4f,6c,c3,a1,20,4d,75,6e,64,6f,21";
String[] partes = s.split(","); // separa as partes por vírgula
byte[] bytes = new byte[partes.length]; // cria o array de bytes
for (int i = 0; i < bytes.length; i++) { // transforma cada parte em número
bytes[i] = (byte) Integer.parseInt(partes[i], 16);
}
// converte os bytes para String
String result = new String(bytes, Charset.forName("UTF-8"));
System.out.println(result); // Olá Mundo!
Um detalhe é que eu tive que “adivinhar” que esses bytes estão codificados em UTF-8 (no caso, os bytes c3 e a1 representam a letra “a” com acento agudo - em outros encodings ficaria diferente). Para entender de fato essa questão de encodings e tudo mais, sugiro que leia aqui <-- texto longo, porém - na minha opinião - necessário para entender essa questão infelizmente pouco compreendida por programadores em geral (eu incluso) 
obg , resolvido