整数到十六进制字符串NumberformatException

时间:2013-10-15 07:23:48

标签: java int hex numberformatexception

我想将整数值转换为十六进制字符串。我快速搜索了stackoverflow并将其作为following way(正如所接受的解决方案所示 - 但是看起来不够仔细):

Integer.valueOf(String.valueOf(n), 16);

但是在尝试转换时

 Integer.valueOf(String.valueOf(-2115381772), 16)

它会抛出一个NumberFormatException出于好奇 - 为什么抛出NumberFormatException?

(之后我将代码更改为Integer.toHexString(-2115381772),一切都按预期工作。)

3 个答案:

答案 0 :(得分:2)

-2115381772因为十六进制不适合整数。

请尝试Long.valueOf(String.valueOf(-2115381772), 16);

答案 1 :(得分:2)

由于,

Integer.valueOf(String.valueOf(-2115381772), 16)在十六进制(16)基础中考虑-2115381772值,并且超出int值的范围。所以你得到了那个例外。

Integer.toHexString(-2115381772)在十进制基数中考虑-2115381772值,它在int值的范围内。

答案 2 :(得分:1)

int的最小值为-2147483648

因此,如果您提供的任何值小于-80000000,则会抛出NumberFormatException

因为Integer.valueOf(String.valueOf(-80000000), 16)提供-2147483648作为输出,这是int的最小值。