[Resolvido] Soma de String em hexa com um numero hexa

4 respostas
J

Olá pessoal,

gostaria de saber como somar uma String em hexa com um valor fixo em hexa (A0 por exemplo), o resultado dessa soma final deve ser uma String.

Eu sei que já há alguns tópicos sobre isso, mas infelizmente não consegui entender.

Desde já agradeço,
aguardo resposta…

4 Respostas

S

Olá Jalerson,

Bom, se você quer fazer matemática… somar por exemplo, tem que converter a String para a forma numerica.

Por exemplo usando Long.parseLong(String str, int base) e usando a base 16.

Dái, dá pra adicionar, substrair normalmente. E quando tem o resultado pronto, é só converter para String de novo, usando, por exemplo Long.toHexString(long).

Para valores fixos em hexa, no código, basta usar o formato 0xnúmeroemhexa, por exemplo no case de A0 :arrow: 0xA0

Um exemplo:

String hexaStr = "CCFF00";
        final int hexaFixo = 0xa0;
        
        long l = Long.parseLong(hexaStr, 16);
        l += hexaFixo;
        
        String resultado = Long.toHexString(l);
        System.out.println(resultado);

Dá pra entender?

J

beleza deu pra entender perfeitamente, mas só uma coisa: é necessário esse 0x na frente do a0? E por que?

Obrigado!

S

É necessario, sim. 0x é para identificar ao compilador java que a0 é um valor hexa. Quer dizer, é necessario nos casos onde você especifica um valor no código java. Se fosse uma String “A0” não é necessario usar 0x.

Ok, no caso de a0 é obvio que é hexa(porém o compilador aínda quer que você use o 0x), mas imagine ter um valor hexa que também poderia ser decimal… por exemplo 0x10

Veja o exemplo:

int i;
        i = 10; // decimal 10
        System.out.println("decimal: " + i);
        System.out.println("hex: " + Integer.toHexString(i));
        i = 0x10; // hexa 10.. valor em decimal eh 16
        System.out.println("decimal: " + i);
        System.out.println("hex: " + Integer.toHexString(i));

Ele imprime o seguinte:

Faz sentido?

Abraços,
Sami

J

Sim faz, perfeito. Muito obrigado! :slight_smile:

Criado 9 de julho de 2005
Ultima resposta 11 de jul. de 2005
Respostas 4
Participantes 2