Integer.parseInt在java中提供java.lang.NumberFormatException
我有一个字符数组Integer.parseInt在java中提供java.lang.NumberFormatException,java,Java,我有一个字符数组 char[] bitsString = new char[16]; bitsString = {'1','1','1','1','1','1','0','1','1','1','1','0','0','1','1','0'}; 然后我将其转换为相应的整数,如下所示: int givenNumber = Integer.parseInt(new String(bitsString), 2); 当数字位字符串数组长度小于10时,上述逻辑工作正常。但是当它增加到11或更多时,它向
char[] bitsString = new char[16];
bitsString = {'1','1','1','1','1','1','0','1','1','1','1','0','0','1','1','0'};
然后我将其转换为相应的整数,如下所示:
int givenNumber = Integer.parseInt(new String(bitsString), 2);
当数字位字符串数组长度小于10时,上述逻辑工作正常。但是当它增加到11或更多时,它向我显示了java.lang.NumberFormatException的原因。?经过一些尝试和试验后,我发现,情况是这样的,因为16位值超过了
整数的限制
但是当它从int
更改为long
long givenNumber = Long.parseLong(new String(bitsString), 2);
它工作得非常好。因为在本例中,long的长度为64位。经过一些尝试和尝试后,我发现是这样的,因为16位的值超过了整数的限制
但是当它从int
更改为long
long givenNumber = Long.parseLong(new String(bitsString), 2);
它工作得非常好。因为在本例中,long的长度为64位。这在我的计算机上可以很好地编译。输出是64998。当您提供某种无效输入时,它可能会引发该异常;由于您在此处提供了有效的输入,我们无法告诉您未指定的输入引发异常的方式或原因。最可能的解释是您忘记传递2。Integer.MAX_值是一个10位数字。在我的计算机上可以编译。输出是64998。当您提供某种无效输入时,它可能会引发该异常;由于您在此处提供了有效的输入,我们无法告诉您未指定的输入引发异常的方式或原因。最可能的解释是您忘记传递2。Integer.MAX_值是一个10位数字。在Java中,整数的长度为32位。在Java中,整数的长度为32位。