java - 二进制转十进制并翻转0和1 JAVA

标签 java binary parseint

    public static int reverseIntBitwise(int value) {
    String res = String.format("%32s", 
    Integer.toBinaryString(value)).replace(' ', '0');

    char[] charArray = res.toCharArray();
    for(int i=0; i<charArray.length; i++){
        if(charArray[i] == '0'){
            charArray[i]='1';
        }else if(charArray[i]=='1'){
            charArray[i]='0';
        }
    }
    String res2 = new String(charArray);
    return Integer.parseInt(res2, 2);
}

所以 res = 00000000000000000000000000101110 和 res2 = 11111111111111111111111111010001

但是当我尝试将它转换回 int 时,它会显示在控制台中:

Exception in thread "main" java.lang.NumberFormatException: For input string: "11111111111111111111111111010001"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:583)
    at com.company.Main.reverseIntBitwise(Main.java:169)
    at com.company.Main.main(Main.java:150)

谁能帮忙解决这个问题? 谢谢

最佳答案

您得到 NumberFormatException 因为结果数字 4294967249 超出了 Integer 的范围(即超过 Integer.MAX_VALUE)。您可以尝试 BigInteger,例如:

String res2 = "11111111111111111111111111010001";
System.out.println(new BigInteger(res2, 2));

关于java - 二进制转十进制并翻转0和1 JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44614115/

相关文章:

Javascript,分数被附加而不是添加到分数字段?

java - 服务器运行时 Hibernate 不创建表

javascript - 在 Head 的 Var 中嵌套 parseInt 的最佳方式

java - CompletableFuture 和锁

php - 在php中将二进制字符串转换为整数

c - 将小数十进制转换为二进制后,我的输出显示的小数位不超过 6 位。我需要小数点后 12 位

c++ - 显示二进制加法后的最后一位

javascript - Math.max 和 parseInt 遇到错误

java - 开发基于 Java EE 的 Web 应用程序时如何提高生产力

java - 如何处理除以零的百分比?