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

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


但是当尝试转换时

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


它会抛出一个NumberFormatException。因此出于好奇-为什么会引发NumberFormatException?

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

最佳答案

因为,

Integer.valueOf(String.valueOf(-2115381772), 16)以十六进制(16)为基础考虑-2115381772值,并且该值超出了int值的范围。因此,您将收到该异常。

Integer.toHexString(-2115381772)以小数为基础考虑-2115381772值,并且在int值的范围内。

08-17 18:43