繁体   English   中英

为什么我用这个Integer.parseInt(x,y)得到一个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM