Galera tenho um programa que me gera um nome dessa forma:
Name = 00530069006C00760069006F0020004D006F006E0074;Unknown
Queria converter esse hexa para uma String.
Alguem sabe pelo menos qual classe utilizar?
Ueh, isso ja vem como string pra vc, nao?
Esse número é muito grande, acho que você possivelmente será obrigado a usar BigInteger (o número é maior que 2^64). :thumbup:
Como disse o Ilmo. Carlos, isso já deve vir como String pra você.
Parece que é uma representação dos caracters em hexa, 16 bits para cada um.
0053 = S
0069 = i
etc
Talvez você queira converter sua String desse jeito?
Não consigo pensar em nunhum jeito “automático” pra fazer a conversação, mas veja esse trecho de código:
public static void main(String[] args) {
String hexaStr = "00530069006C00760069006F0020004D006F006E0074";
StringBuffer sb = new StringBuffer();
for (int i=0; i*4 < hexaStr.length(); i++) {
String s = hexaStr.substring(i*4, i*4+4);
char c = (char) Integer.parseInt(s, 16);
sb.append(c);
}
System.out.println(sb);
}
A saída é
Ou talvez a seguinte forma fosse mais elegante:
public static void main(String[] args) throws Exception {
String hexaStr = "00530069006C00760069006F0020004D006F006E0074";
byte[] data = new byte[hexaStr.length()/2];
for (int i=0; i*2 < hexaStr.length(); i++) {
data[i] = (byte) Integer.parseInt(hexaStr.substring(i*2, i*2+2), 16);
}
String result = new String(data, "UTF-16");
System.out.println(result);
}
Abraços,
Sami
Uia,
Valeu… isso mesmo.