আমি হেক্স কোডের 8 টি অক্ষরের দীর্ঘ একটি স্ট্রিংটিকে একটি পূর্ণসংখ্যার সাথে রূপান্তর করার চেষ্টা করছি যাতে আমি স্ট্রিংয়ের তুলনায় অনেকগুলি পৃথক মানের চেয়ে তুলনা করতে পারি।
আমি জানি এটি সি ++ এ মোটামুটি তুচ্ছ তবে জাভাতে আমার এটি করা দরকার। আমার যে পরীক্ষার কেসটি সন্তুষ্ট করতে হবে তা হ'ল মূলত "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
তবে negativeণাত্মক সংখ্যায় ম্যাপ করা হয়।