如何打印二进制长?

Jav*_*ake 4 java

我试图打印一个Long in Binary,但它一直在切断0.有没有办法强迫它显示所有位?

这是我的代码:

long l = 1;
System.out.println(Long.toBinaryString((long)l));
Run Code Online (Sandbox Code Playgroud)

如上所述返回仅1由于删除0'si希望维护:

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;
}
Run Code Online (Sandbox Code Playgroud)

twa*_*249 7

你可以这样做

for(int i = 0; i < Long.numberOfLeadingZeros((long)l); i++) {
      System.out.print('0');
}
System.out.println(Long.toBinaryString((long)l));
Run Code Online (Sandbox Code Playgroud)

这将得到你想要的,除了每4个数字之间没有空格(你应该能够编码).可能有一种方法可以使用Formatter自动执行此操作, 但我找不到它.

编辑:

你可以使用String's格式方法,如果你知道你需要的0的数量(我忘了将它改回一个数字,这将修复异常).

String.format("%032d", new BigInteger(Long.toBinaryString((long)l)));
Run Code Online (Sandbox Code Playgroud)