Ich versuche, eine Zeichenfolge mit 8 Zeichen Hex-Code in eine Ganzzahl umzuwandeln, damit ich einen Int-Vergleich anstelle von Zeichenfolgenvergleichen über viele verschiedene Werte durchführen kann.
Ich weiß, dass dies in C ++ ziemlich trivial ist, aber ich muss es in Java tun. Der Testfall, den ich erfüllen muss, besteht im Wesentlichen darin, "AA0F245C" in int und dann zurück in diesen String zu konvertieren, damit ich weiß, dass er richtig konvertiert.
Ich habe folgendes versucht:
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
Ich habe auch versucht, zwei Zeichen gleichzeitig zu machen und die Ergebnisse zu multiplizieren, was bei der Konvertierung funktioniert, aber die Zahl stimmt nicht.
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.
Ich kann keine Bibliotheken von Drittanbietern verwenden, nur damit Sie wissen, dass dies in Java-Standardbibliotheken erfolgen muss.
Danke im Voraus für Ihre Hilfe.
0xAA0F245C = 2853119068
aberInteger.MAX_VALUE = 0x7fffffff = 2147483647
Integer.parseUnsignedInt("value",radix)
Methode hinzugefügt , die Ihrem Zweck dient. Wenn der Wert größer ist als Integer.MAX_VALUE
er, wird er einer negativen Zahl zugeordnet.