2017-01-18 68 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); 
相关问题