8 karakter uzunluğunda onaltılık kod olan bir dizeyi tam sayıya dönüştürmeye çalışıyorum, böylece çok sayıda farklı değer üzerinden dize karşılaştırmaları yerine int karşılaştırması yapabilirim.
Bunun C ++ 'da oldukça önemsiz olduğunu biliyorum ama bunu Java ile yapmam gerekiyor. Karşılamam gereken test durumu, esasen "AA0F245C" yi int'e dönüştürmek ve sonra o dizgeye geri dönerek doğru dönüştürüldüğünü bilmemdir.
Aşağıdakileri denedim:
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
Ayrıca, bir seferde iki karakter yapmayı ve sonuçları çarpmayı denedim, bu dönüşüm işe yarıyor, ancak sayı doğru değil.
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.
Üçüncü şahıs kitaplıklarını sadece bildiğiniz için kullanamam, bu yüzden bunun Java standart kitaplıklarında yapılması gerekir.
Yardımınız için şimdiden teşekkür ederim.
0xAA0F245C = 2853119068
veInteger.MAX_VALUE = 0x7fffffff = 2147483647
Integer.parseUnsignedInt("value",radix)
Amacınıza hizmet eden yöntemi eklediler . Değer bundan büyükse Integer.MAX_VALUE
, negatif bir sayıya eşlenir.