我正在尝试打印一个Long in Binary,但它一直在切断0
。有没有办法强制它显示所有位?
这是我的代码:
long l = 1;
System.out.println(Long.toBinaryString((long)l));
由于我希望维护已移除1
而仅提及0
的回复:
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;
}
答案 0 :(得分:7)
你可以这样做
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's
格式方法(我忘了将它改回一个数字,这将修复异常)。
String.format("%032d", new BigInteger(Long.toBinaryString((long)l)));
答案 1 :(得分:0)
如果你愿意使用Apache Commons StringUtil,你可以这样做:
long l = 1;
System.out.println( StringUtils.leftPad( Long.toBinaryString( l ), 64, "0" ) );
答案 2 :(得分:-1)
long value=4;
String mask = "00000000000000000000000000000000";
String str = Long.toBinaryString((long) value);
System.out.println(mask.substring(0, mask.length()-str.length())+str);
For a value of 4 the result will be 00000000000000000000000000000100