数值类型解析函数带有负数的异常

System.out.println(Integer.parseInt("7FFFFFFF",16)); //this is ok.
System.out.println(Integer.parseInt("FFFFFFFF",16)); //this throws Exception
System.out.println(Integer.valueOf("FFFFFFFF",16)); //this throws Exception

当我尝试使用parseInt或valueOf方法将十六进制数转换为整数类型,负数时,该方法将为负数抛出NumberFormatException。我在任何地方都找不到答案。

Hiram908416047 回答:数值类型解析函数带有负数的异常

Integer.parseInt()Integer.valueOf()期望负数(-)为负值。

因此,“ FFFFFFFF”被解析为大于Integer.MAX_VALUE的正值。因此,例外。

如果要将其解析为负值,请将其解析为long并强制转换为int

System.out.println((int)Long.parseLong("FFFFFFFF",16));

打印

-1
,

Integer.parseInt("FFFFFFFF",16)并不意味着“请给我int这个十六进制的位模式”。它的意思是“将FFFFFFFF解释为一个以16为底的数字表示形式,并给我一个int代表相同的数字”。

该数字为数字4294967295,该数字超出int的范围,因此是例外。

本文链接:https://www.f2er.com/2591206.html

大家都在问