<分区>
为什么 Integer.parseInt("11111111111111111111111111111111",2) 抛出
java.lang.NumberFormatException: For input string: "11111111111111111111111111111111"
在 java 中整数是 32 位的,我期望一个有效的返回值,这里出了什么问题?
<分区>
为什么 Integer.parseInt("11111111111111111111111111111111",2) 抛出
java.lang.NumberFormatException: For input string: "11111111111111111111111111111111"
在 java 中整数是 32 位的,我期望一个有效的返回值,这里出了什么问题?
最佳答案
您假设您将原始位传递给该方法,但实际上您传递的是数字的二进制表示。因此,您最多可以指定 31 位和一个符号。这给出了您预期的结果:
Integer.parseInt("-1", 2);
该方法的约定使得您可以指定任何(合理的)基数,例如十六进制基数:
Integer.parseInt("-1", 36);
从这里可以明显看出,这是关于从任意数字系统中的表示形式到 int
的转换,而不是传递 int
的原始内容.
关于java - 为什么 Integer.parseInt ("11111111111111111111111111111111",2) 在 java 中抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18170101/