十六进制到十进制转换

时间:2016-08-20 10:55:57

标签: java

我需要在java中将十六进制的字符串转换为十进制..

我的十六进制值是“00000156A56BE980”。

我的所需输出为 1471654128000

我在java中完成了以下操作,

public static void main (String args [])
{
  String hexValue = " 00000156A56BE980 ";
  Integer result = Integer.parseInt(hexValue, 16);
 System.out.println(result);
}

但是我收到以下错误,

  

数字格式输入字符串“00000156A56BE980”

的例外情况

我试过给long也会出现同样的错误..对于其他十六进制值它即将到来但是当我们给出更大值的十六进制字符串时它会显示错误。

我们如何将此数字转换为十进制? 任何人都可以为我解决这个问题吗?

4 个答案:

答案 0 :(得分:4)

试试吧

import java.math.*;

class Main {
    public static void main (String args [])
    {
        String hexValue = "00000156A56BE980";
        BigInteger result = new BigInteger(hexValue, 16);
        System.out.println(result);
    }
}

另见repl.it

问题可能是因为您的值不适合Integer的值范围(-2 31 至2 32 -1) - 请参阅docs

答案 1 :(得分:1)

对于32位int

,该数字太大

请尝试使用long

public static void main(String[] args) {
    String hexValue = "00000156A56BE980";
    long result = Long.parseLong(hexValue, 16);
    System.out.println(result);
}

注意:您不能在数字中包含空格。您可以致电.trim()将其删除。

答案 2 :(得分:1)

为了使代码可以工作,

2件事:

  1. 删除修剪字符串的空格
  2. 结果doenst适合整数,所以使用Long或BigInteger而不是
  3.  public static void main(String[] args) {
        String hexValue = " 00000156A56BE980 ";
        long result = Long.parseLong(hexValue.trim(), 16);
        System.out.println(result);
        }
    

答案 3 :(得分:0)

对于整数(> 2 ^ 32),该数字太大。

(字符串表示的值不是int类型的值。)

看看here