C'est parceque ton nombre est négatif.
Or, quand tu veux le retransformer en entier, il tente de le convertir en un entier
positif, qui dépasse la valeur Integer.MAX_VALUE
Si tu essayes avec Long.valueOf(h,16), tu verras que ça passe, mais que tu obtiens un très grand nombre positif.
Si tu veux la réversibilité, il faut:
- tester si ton nombre est négatif
- si non, aucun problème
- si oui, tu codes en hexa sa valeur absolue et tu ajoutes "-" en début de chaîne
- là tu obtiendras la résersibilité de l'opération
Voilà pour ton exemple le code réversible que tu voulais:
1 2 3
|
String h = "-" + Integer.toHexString (1333).toUpperCase(); System.out.println(h);
System.out .println( "Integer.parseInt: "+ Integer.valueOf(h,16)); |
ou alors, il te faudra passer par une librairie plus poussée de manipulation hexadécimale
Partager