Saya mencoba untuk mengubah string yang terdiri dari 8 karakter kode hex menjadi integer sehingga saya dapat melakukan perbandingan int daripada perbandingan string pada banyak nilai yang berbeda.
Saya tahu ini cukup sepele di C ++ tetapi saya harus melakukannya di Java. Kasus uji yang perlu saya penuhi pada dasarnya adalah untuk Mengkonversi "AA0F245C" menjadi int dan kemudian kembali ke string itu sehingga saya tahu itu benar.
Saya telah mencoba yang berikut ini:
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
Saya juga mencoba melakukannya dua karakter sekaligus dan mengalikan hasilnya, yang konversinya berfungsi tetapi jumlahnya tidak tepat.
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.
Saya tidak bisa menggunakan perpustakaan pihak ketiga asal tahu saja, jadi ini harus dilakukan di perpustakaan standar Java.
Terima kasih atas bantuan Anda sebelumnya.
0xAA0F245C = 2853119068
tapiInteger.MAX_VALUE = 0x7fffffff = 2147483647
Integer.parseUnsignedInt("value",radix)
metode yang sesuai dengan tujuan Anda. Jika nilainya lebih besar dari Integer.MAX_VALUE
itu dipetakan ke angka negatif.