我想将整数值转换为十六进制字符串。我迅速搜索了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
值的范围内。