Java 如何用二进制打印长字符?

Java 如何用二进制打印长字符?,java,Java,我正试图打印一个长的二进制文件,但它一直切断0。有没有办法强制它显示所有位 这是我的代码: long l = 1; System.out.println(Long.toBinaryString((long)l)); 由于我希望维护已删除的0,因此仅返回所述的1: 0000 0001 提前谢谢 我的临时解决方案: public String fillZeros(Long value) { String str = Long.toBinaryString((long) value);

我正试图打印一个长的二进制文件,但它一直切断
0
。有没有办法强制它显示所有位

这是我的代码:

long l = 1;
System.out.println(Long.toBinaryString((long)l));
由于我希望维护已删除的
0
,因此仅返回所述的
1

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;
}
公共字符串填充零(长值)
{
String str=Long.toBinaryString((Long)值);
字符串温度;
temp=str;
while(温度长度()<32){
温度=“0”+温度;
}
返回温度;
}
您可以这样做

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

如果您愿意使用Apache Commons StringUtil,可以这样做:

    long l = 1;
    System.out.println( StringUtils.leftPad( Long.toBinaryString( l ), 64, "0" ) );

此处的外观可能重复:永远不要使用小写L作为变量名。至少使用
StringBuilder
,因为重复连接“0”效率低下。你应该加上64个零,而不是32个。@Tudor,这不完全正确。这取决于我们是用Java还是C来谈论
long
。Im使用C数据类型,因为Im只在Java上测试。就C而言,
long
为32位,
long
为64位。线程“main”中的异常java.util.IllegalFormatConversionException:d!=java.lang。String@JavaCake修复了例外情况,因此我使用了32,因为在您的问题中有多少位,但java中的Long是64位,因此真正起作用的应该是
%064d”
。我在顶部的评论中提到了为什么我使用32位。谢谢你的回答,但不幸的是我没有使用StringUtil。StringUtil还有很多其他有用的东西,我建议你考虑将它添加到你的工具集中。除非这是家庭作业,我知道最简单的方法。
    long l = 1;
    System.out.println( StringUtils.leftPad( Long.toBinaryString( l ), 64, "0" ) );
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