我正在尝试将字符串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 :(得分: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);