मैं एक स्ट्रिंग में 8 अक्षर लंबे हेक्स कोड को एक पूर्णांक में बदलने की कोशिश कर रहा हूं, ताकि मैं बहुत अधिक भिन्न मूल्यों पर स्ट्रिंग तुलनाओं के बजाय अंतर तुलना कर सकूं।
मुझे पता है कि यह C ++ में काफी तुच्छ है, लेकिन मुझे इसे जावा में करने की आवश्यकता है। मुझे जिस टेस्ट केस को संतुष्ट करना है वह अनिवार्य रूप से "AA0F245C" को इंट में और फिर वापस उस स्ट्रिंग में बदलना है ताकि मुझे पता चले कि यह सही में परिवर्तित हो रहा है।
मैंने निम्नलिखित कोशिश की है:
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
मैंने एक समय में दो वर्णों को करने और परिणामों को गुणा करने की कोशिश की है, जो रूपांतरण कार्य करता है लेकिन संख्या सही नहीं है।
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.
मैं तीसरे पक्ष के पुस्तकालयों का उपयोग नहीं कर सकता, बस आप जानते हैं, इसलिए यह जावा मानक पुस्तकालयों में किया जाना चाहिए।
आपकी सहायता के लिए अग्रिम रूप से धन्यवाद।
0xAA0F245C = 2853119068लेकिनInteger.MAX_VALUE = 0x7fffffff = 2147483647
Integer.parseUnsignedInt("value",radix)तरीका जोड़ा जो आपके उद्देश्य की पूर्ति करता है। यदि मान इससे अधिक है तो Integer.MAX_VALUEइसे ऋणात्मक संख्या में मैप किया जाता है।