2017-01-18 110 views
1

我想串9C72E0FA11C2E6A8轉換爲十進制值的十六進制值:將字符串轉換成一個非常大的數字

   String strHexNumber = "9C72E0FA11C2E6A8"; 
      Long decimalNumber = Long.parseLong(strHexNumber, 16); 
      System.out.println("Hexadecimal number converted to decimal number"); 
      System.out.println("Decimal number is : " + decimalNumber); 

我有望獲得價值11273320181906204328,但我得到了

Exception in thread "main" java.lang.NumberFormatException: For input string: "9C72E0FA11C2E6A8" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.lang.Long.parseLong(Long.java:592) 
    at ConvertHexToDecimalExample.main(ConvertHexToDecimalExample.java:22) 

如何我可以將十六進制轉換爲十進制的Java?

謝謝!

+0

數量顯然比長大得多,所以使用'parseLong'將無法正常工作。嘗試['BigInteger(String,int)'](https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#BigInteger(java.lang.String,%20int)) 。 –

回答

6

使用BigInteger 傳遞字符串值作爲參數,給出的基數作爲參數

String strHexNumber = "9C72E0FA11C2E6A8"; 
BigInteger mySuperBigInteger = new BigInteger(strHexNumber , 16); 
0

Java API document for BigInteger

public BigInteger(String val, int radix) 

將BigInteger的String表示在指定 基數轉換爲BigInteger。字符串表示由一個 可選的減號或加號組成,後跟一個或多個指定基數的 數字序列。字符到數字的映射是由Character.digit提供的 。該字符串不得包含任何無關的 字符(例如,空格)。

在你的情況,你可以這樣做:

BigInteger bigInt = new BigInteger(strHexNumber, 16); 
相關問題