![](/img/trans.png)
[英]Why do i get for an Integer.parseInt(String) an numberformatexception?
[英]Why do I get a NumberFormatException with this Integer.parseInt(x, y)?
我的代码很简单:
int idec = Integer.parseInt(value, 16);
当我输入值“01dae610”时,我正确地得到“31122960”。 当我输入值“d149e510”时,我得到一个java.lang.NumberFormatException。 正确的值是:“3511280912”。
我不知道为什么会这样。 有人可以帮忙吗?
因为那超出了int
的范围。 请改用long
/ Long
。
int
是用Java 签名的 - 所以最大值是2 31 - 1。
如果使用Long.parseLong(value, 16)
您将获得所需的值。 如果您乐意获得正确的位模式,则可以转换回int
,但会将其解释为负值。
仅仅因为它超出了int
的范围。 您应该使用long
数据类型。
Integer.MAX_VALUE
是2147483647,低于您期望的值。 所以这个字符串不代表任何可以解析成int
。 因此例外。
从这里 :
int数据类型是32位带符号的二进制补码整数。 它的最小值为-2,147,483,648,最大值为2,147,483,647(含)。
3,511,280,912> 2,147,483,647,它解释了NumberFormatException
。
但是,你可以使用很long
。 从同一页面:
长数据类型是64位带符号的二进制补码整数。 它的最小值为-9,223,372,036,854,775,808,最大值为9,223,372,036,854,775,807(含)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.