2010-12-11 9 views
9

किसी को भी मुझे जावाएक 18 अंकीय संख्यात्मक स्ट्रिंग को BigInteger में कैसे परिवर्तित करें?

यानी में BigInteger करने के लिए एक 18 अंकों स्ट्रिंग सांख्यिक परिवर्तित करने में मदद कर सकते हैं, एक स्ट्रिंग "0x9999999999999999"0x9999999999999999 संख्यात्मक मान के रूप दिखाई देनी चाहिए।

उत्तर

1

क्या आप उम्मीद करते हैं कि संख्या हेक्स में हो, क्योंकि 0x आमतौर पर इसका क्या अर्थ है?

एक BigInteger और वापस में पाठ के रूप में एक hexidecimal संख्या चालू करने के लिए एक BigInteger

BigInteger bi = new BigInteger(string); 
String text = bi.toString(); 

में एक सादे स्ट्रिंग चालू करने के लिए।

if(string.startsWith("0x")) { 
    BigInteger bi = new BigInteger(string.sustring(2),16); 
    String text = "0x" + bi.toString(16); 
} 
+0

यह सुनिश्चित नहीं है कि दूसरा उदाहरण दिया गया है कि ओपी ने उत्पादन के लिए पूछे जाने वाले ओपी का उत्पादन क्यों किया, @ कार्लोस एकमात्र ऐसा है जो करता है। (उन्होंने बाद में पोस्ट किया) –

+0

यह नकारात्मक मानों पर भी विचार नहीं करता – TheRealNeo

+0

@TheRealNeo क्या आप नकारात्मक हेक्साडेसिमल मान का उदाहरण दे सकते हैं? –

12

आप BigInteger निर्माता में आधार निर्दिष्ट कर सकते हैं।

BigInteger bi = new BigInteger("9999999999999999", 16); 
String s = bi.toString(16); 
2

स्ट्रिंग हमेशा "0x" के साथ शुरू होता है और हेक्साडेसिमल है:

String str = "0x9999999999999999"; 
    BigInteger number = new BigInteger(str.substring(2)); 

बेहतर, देखें कि क्या यह "0x"

String str = "0x9999999999999999"; 
    BigInteger number; 
    if (str.startsWith("0x")) { 
     number = new BigInteger(str.substring(2), 16); 
    } else { 
     // Error handling: throw NumberFormatException or something similar 
     // or try as decimal: number = new BigInteger(str); 
    } 

उत्पादन करने के लिए

साथ शुरू होता है यह हेक्साडेसिमल के रूप में या हेक्साडेसिमल प्रतिनिधित्व में कनवर्ट करें:

System.out.printf("0x%x%n", number); 
    // or 
    String hex = String.format("0x%x", number); 
+0

यहां नकारात्मक मानों के लिए देखें! – TheRealNeo

संबंधित मुद्दे

 संबंधित मुद्दे