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…
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?
beleza deu pra entender perfeitamente, mas só uma coisa: é necessário esse 0x na frente do a0? E por que?
Obrigado!
É 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
Sim faz, perfeito. Muito obrigado! 