转换十六进制值非常大的字符串

时间:2017-01-18 16:16:57

标签: java hex biginteger

我正在尝试将字符串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中将十六进制转换为十进制?

谢谢!

2 个答案:

答案 0 :(得分:7)

使用BigInteger 将String值作为参数传递,并将基数作为参数

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

答案 1 :(得分:0)

来自Java API document for BigInteger

public BigInteger(String val, int radix)
     

转换指定的BigInteger的String表示形式   基数为BigInteger。字符串表示由一个   可选的减号或加号后跟一个或多个序列   指定基数中的数字。字符到数字的映射是   由Character.digit提供。字符串可能不包含任何无关的内容   字符(例如空格)。

在您的情况下,您可以这样做:

BigInteger bigInt = new BigInteger(strHexNumber, 16);