我正在尝试以十进制格式反向打印32位二进制数:
例:


  x = 3,
            00000000000000000000000000000011
  => 11000000000000000000000000000000
  
  返回3221225472


我遇到数字格式异常,有人可以帮我解决我代码中的错误吗?我感谢您的帮助。

public class ReverseBinary {

    public long reverse(long a) {

        String s1 = String.format("%32s", Long.toBinaryString(a)).replace(' ', '0');
        StringBuilder sb = new StringBuilder(s1);
        String s = sb.reverse().toString();

        long c = Integer.parseInt(s, 2);

        return c;
    }

    public static void main(String args[]) {
        ReverseBinary rb = new ReverseBinary();

        long ans = rb.reverse(3);

        System.out.println(ans);
    }
}

最佳答案

您的变量c可能是一个长变量,但是Integer.parseInt(s,2)传递的值仍然是整数。此调用尝试解析会导致问题的整数值,因为该值显然超出了整数范围。

只需将Integer.parseInt(s,2)替换为Long.parseLong(s, 2)

关于java - 尝试反向打印32位二进制数时出现NumberFormatException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35016570/

10-11 22:32
查看更多