我编写了一个将字符串转换为整数
的函数 if ( data != null )
{
int theValue = Integer.parseInt( data.trim(), 16 );
return theValue;
}
else
return null;
我有一个字符串,它是6042076399,它给了我错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "6042076399"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:461)
这不是将字符串转换为整数的正确方法吗?
答案 0 :(得分:8)
Integer
无法保存该值。 6042076399(413424640921,十进制)大于2147483647,最大整数可以容纳。
尝试使用Long.parseLong
。
答案 1 :(得分:8)
这是我喜欢的方式:
编辑(08/04/2015):
如下面的评论中所述,实际上这样做更好:
String numStr = "123";
int num = Integer.parseInt(numStr);
答案 2 :(得分:4)
这是正确的方法,但您的值大于int
的最大尺寸。
int
可容纳的最大大小为2 31 - 1或2,147,483,647。您的价值是6,042,076,399。如果需要基本类型,则应该将其存储为long
。 long的最大值明显更大 - 2 63 - 1.另一个选项可能是BigInteger
。
答案 3 :(得分:2)
该字符串大于Integer.MAX_VALUE。你无法解析超出整数范围的东西。 (我相信它们会达到2 ^ 31-1。)
答案 4 :(得分:1)
除了其他人回答的内容之外,如果您的字符串超过8个十六进制数字(但最多16个十六进制数字),您可以使用Long.parseLong()
而不是使用int将其转换为long Integer.parseInt()
。