2015-12-14 10 views
5

मैं दशमलव में एक हेक्स स्ट्रिंग परिवर्तित करना चाहते हैं, लेकिन मैं निम्नलिखित कोड में एक त्रुटि मिली:java.lang.NumberFormatException जब परिवर्तित एक हेक्स स्ट्रिंग Int को

String hexValue = "23e90b831b74";  
int i = Integer.parseInt(hexValue, 16); 

त्रुटि:

Exception in thread "main" java.lang.NumberFormatException: For input string: "23e90b831b74" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.lang.Integer.parseInt(Integer.java:495) 

उत्तर

13

23e90b831b74int में फिट होने के लिए बहुत बड़ा है।

आप आसानी से अंक की गणना करके देख सकते हैं। हेक्स संख्या में प्रत्येक दो अंकों के लिए एक बाइट की आवश्यकता होती है, इसलिए 12 अंकों को 6 बाइट की आवश्यकता होती है, जबकि int में केवल 4 बाइट हैं।

Long.parseLong का उपयोग करें।

String hexValue = "23e90b831b74";  
long l = Long.parseLong(hexValue, 16); 
3

ऐसा तब होता है जब "स्ट्रिंग को पूर्णांक के रूप में पार्स नहीं किया जा सकता"। अन्य कारणों से, यह मामला होगा यदि मान Integer.MAX_VALUE या Integer.MIN_VALUE से अधिक है।

int के रूप में सबसे बड़ा संख्या 2147483647 (231-1) है, और सबसे बड़ा लंबा 9 223372036854775807 (263-1) है, केवल दो गुना लंबा है। मनमाने ढंग से लंबी संख्याओं का विश्लेषण करने के लिए, बिगइंटर का उपयोग करें:

import java.math.BigInteger; 
BigInteger number = new BigInteger(hexValue); 
संबंधित मुद्दे