Java 为什么这个整数会有NumberFormatException.parseInt(x,y)?
我的代码很简单:Java 为什么这个整数会有NumberFormatException.parseInt(x,y)?,java,hex,parseint,Java,Hex,Parseint,我的代码很简单: int idec = Integer.parseInt(value, 16); 当我输入值“01dae610”时,我正确地得到“31122960”。 当我输入值“d149e510”时,我得到一个java.lang.NumberFormatException。正确的值为:“3511280912” 我不知道这是为什么。有人能帮忙吗?因为这超出了int的范围。改为使用long/long。int是用Java签名的-因此最大值为231-1 如果使用Long.parseLong(值,16
int idec = Integer.parseInt(value, 16);
当我输入值“01dae610”时,我正确地得到“31122960”。
当我输入值“d149e510”时,我得到一个java.lang.NumberFormatException。正确的值为:“3511280912”
我不知道这是为什么。有人能帮忙吗?因为这超出了
int
的范围。改为使用long
/long
。int
是用Java签名的-因此最大值为231-1
如果使用
Long.parseLong(值,16)
您将获得所需的值。如果您很高兴得到正确的位模式,但却被解释为负值,那么您可以回溯到int
。只是因为它超出了int
的范围。您应该改用long
数据类型。Integer。最大值为2147483647,低于您期望的值。因此,这个字符串并不表示任何可以解析为int
的内容。因此出现例外情况。来自:
int数据类型是一个32位带符号2的补码整数。它有
最小值为-2147483648,最大值为2147483647
(包括在内)
3511280912>2147483647,这解释了NumberFormatException
但是,您可以使用long
。从同一页:
长数据类型是一个64位有符号2的补码整数。它有
最小值为-9223372036854775808,最大值为
9223372036854775807(含)
谢谢,我真是太蠢了。我以为我在整数范围内。