Je suis en train de convertir une chaîne de 8 caractères de code hexadécimal en un nombre entier de sorte que je peux faire, int comparaison au lieu de comparaisons de chaînes sur un grand nombre de valeurs différentes.
Je sais que c'est assez trivial en C++, mais j'ai besoin de le faire en Java. Le cas de test j'ai besoin à satisfaire est essentiellement à Convertir "AA0F245C" int et puis de nouveau à cette chaîne, de sorte que je sais que c'est la conversion de la droite.
J'ai essayé ce qui suit:
int decode = Integer.decode("0xAA0F245C"); // NumberFormatException
int decode2 = Integer.decode("AA0F245C"); //NumberFormatException
int parseInt = Integer.parseInt("AA0F245C", 16); //NumberFormatException
int valueOf = Integer.valueOf("AA0F245C", 16); //NumberFormatException
J'ai aussi essayé de faire deux caractères à la fois, et en multipliant les résultats, de la conversion fonctionne, mais le nombre n'est pas droit.
int id = 0;
for (int h = 0; h < hex.length(); h= h+2)
{
String sub = hex.subSequence(h, h+2).toString();
if (id == 0)
id = Integer.valueOf(sub, 16);
else
id *= Integer.valueOf(sub, 16);
}
//ID = 8445600 which = 80DEA0 if I convert it back.
Je ne peux pas utiliser des bibliothèques tierces comme vous le savez, donc ce doit être fait en Java bibliothèques standard.
Je vous remercie pour votre aide à l'avance.