我正在尝试以十进制格式反向打印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/