java - 为什么 Integer.parseInt ("11111111111111111111111111111111",2) 在 java 中抛出异常?

标签 java integer

<分区>

为什么 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/

相关文章:

swift - 如何从一个范围内的数字插值到另一个范围内的相应值?

java - AtomicInteger 公平吗?

java - 从字符串中提取 2 个整数

java - 从给定的 WSDL 动态读取 Web 服务结构

java - 由于 Task attempt failed to report status 600 秒,reduce 失败。杀戮!解决方案?

java - 以图形方式自定义 Nimbus 外观和感觉的工具

c++ - 仅使用 4 个字节将整数存储到 QByteArray

java - 从字节创建 3DES key

java - 如果数据库中的数据类型是数字,如何使用 java 检查它的精度和比例

javascript - 递增整数序列