Conversor hexadecimal 32 bits para decimal

4 respostas
C

Estou tentando desesperadamente converter um valor de uma string que está em hexadecimal (F123A84D) para decimal,
que segunda a calculadora do windows em modo programador tipo DWORD me retorna um valor -249.321.395.
Quando eu faço

Long.parseLong("F123A84D", 32)

Está me retornando

516540407949

Não manjo muito hexadecimal e operações de bit, mais o valor que tenho que conseguir é -249.321.395, igual da calculadora do windows.

Alguem tem ideia de como fazer? se falei algo errado me desculpe.

4 Respostas

P

http://docs.oracle.com/javase/6/docs/api/java/lang/Long.html#parseLong%28java.lang.String,%20int%29

Se o teu número é hexadecimal, porque o 32? Deveria ser 16

C

hmm, mais quando eu coloco

Long.parseLong("F123A84D", 16);

Ele me retorna [telefone removido] um valor diferente da calculadora do windows.

Abraços

P

Tudo dependo do tamanho… :slight_smile:

Se deixares a calculadora do windows em QWord e fizeres simplesmente o Long.parseLong, os resultados são iguais.

Se passares a calculadora do windows para DWord, no Java também tens de alturar o número de bits que usas. Se fizeres o cast do resultado para int, já vais ter o resultado igual.

C

Caraaaaaaaaaaaa, tu salvo o meu dia, vlw muito pela ajuda, funcionou perfeitamente.
Obrigado mesmo \o/

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