Konwersja ciągu szesnastkowego na int

Usiłuję przekonwertować ciąg znaków, który ma 8 znaków kodu szesnastkowego na liczbę całkowitą, tak że mogę zrobić porównanie int zamiast porównań łańcuchowych w wielu różnych wartościach.

Wiem, że jest to dość proste w C ++, ale muszę to zrobić w Javie. Przypadek testowy, który muszę spełnić, polega zasadniczo na przekonwertowaniu „AA0F245C” na int, a następnie z powrotem na ten ciąg, aby wiedzieć, że konwertuje on w prawo.

Próbowałem:

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

Próbowałem też robić to po dwa znaki na raz i mnożąc wyniki, które działa przy konwersji, ale liczba nie jest prawidłowa.

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. 

Nie mogę używać bibliotek innych firm tylko po to, żebyś wiedział, więc trzeba to zrobić w standardowych bibliotekach Java.

Z góry dziękuję za pomoc.

questionAnswers(7)

yourAnswerToTheQuestion