String para hexadecimal

4 respostas
Leco2

Gente bom dia!!

Estou tentando converter uma string “A2” para hexadecimal.
eu sei que tem como fazer assim:

byte teste = Integer.parseInt("A2",16)

mas eu queria que o resultado fosse assim 0xA2 tem como?

4 Respostas

T
byte teste = (byte) Integer.parseInt("A2",16); // até aqui você estava fazendo certo
// Se quiser imprimir o valor acima como "0xA2", você precisa fazer:
System.out.printf ("0x%02X ", teste & 0xFF);
Leco2

bom acho q me expresei mal…
quando converto A2 para hexa usando parseInt ele me retorna um valor negativo…quero um valor unsigned

T

Um byte é um inteiro cujo valor, em Java, vai de -128 a +127.

Se quiser um valor positivo, você tem de converter o byte em um int com o truque que lhe passei (efetuar o “AND” com o valor 0xFF):

int b = teste & 0xFF;

Mas de modo geral, você pode trabalhar com byte mesmo, só lembrando que ele tem essa particularidade chata em Java. (Em C# isso não ocorre, provavelmente porque o Anders Hejlsberg deve ter visto que isso de o byte ter sinal é terrivelmente desajeitado.)

Leco2

obrigado Thingol pelas respostas…eu acabei utilizando short…
dei uma lida nesse documento http://www.darksleep.com/player/JavaAndUnsignedTypes.html e acabei optando assim!!

Obrigado de qualquer maneira!!

Criado 3 de agosto de 2009
Ultima resposta 3 de ago. de 2009
Respostas 4
Participantes 2