我正在尝试以二进制形式打印一个 Long,但它一直切断 0
。有没有办法强制它显示所有位?
这是我的代码:
long l = 1;
System.out.println(Long.toBinaryString((long)l));
由于我希望保留的 0
已删除,因此仅返回 1
:
0000 0000 0000 0000 0000 0000 0000 0001
提前致谢。
我的临时解决方案:
public String fillZeros(Long value)
{
String str = Long.toBinaryString((long) value);
String temp;
temp = str;
while(temp.length() < 32) {
temp = "0" + temp;
}
return temp;
}
最佳答案
你可以这样做
for(int i = 0; i < Long.numberOfLeadingZeros((long)l); i++) {
System.out.print('0');
}
System.out.println(Long.toBinaryString((long)l));
这将得到你想要的,除了每 4 个数字之间没有空格(尽管你应该能够编码)。可能有一种方法可以使用 Formatter 自动执行此操作 但我找不到它。
编辑:
如果您知道所需的 0 的数量,您可以使用 String 的
格式方法(我忘记将其改回数字,这将修复异常)。
String.format("%032d", new BigInteger(Long.toBinaryString((long)l)));
关于java - 如何在二进制中打印 Long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10401263/