繁体   English   中英

在Java中读取长二进制数

[英]Reading long binary numbers in java

110011000111100111001100011110011100110001111001110011000111100111001100011110011100110001111001

这不是检查二进制数的有效方法。 您要转换为以10为底的int ,然后检查以10为底的每个数字是否为零或一。 转换本身将在足够长的输入字符串上失败,否则,检查也将失败。

您不应该全部转换,应该检查输入字符串本身。

编辑实际上,您无需执行任何操作。 如果字符串不是指定基数中的数字,则Integer.parseInt()将为您检查它并引发NumberFormatException

您首先将二进制数字字符串解析为十进制整数。 如果它的有效位数超过10个,则其十进制解释太大而无法容纳int ,因此十进制转换失败。

当您要将数字字符串解析为二进制数时,只需避免先将其解析为十进制数即可。 例如,您发布的大部分内容都可以简化为:

int inputNumber = Integer.parseInt(returnEnterNumber(), 
        binaryToDecimal.isSelected() ? 2 : 10);

看一看Integers MAX值:

public class MainClass {

public static void main(String[] arg) {
System.out.println(Integer.MAX_VALUE);   

System.out.println(Integer.MIN_VALUE);   

 }
}

输出将是:

2147483647
-2147483648

这意味着,如果您的位数超过10位,则超出了Integer数据类型的最大数量。 尝试对您的二进制值使用BigInteger或考虑将其作为String返回

这是一行代码,可以满足您的需求

System.out.println(new BigInteger("10101010101010111101010101001101010101010101001010101010101001011101010101010101",2).toString());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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