6

Longをバイナリで印刷しようとしていますが、が途切れ続け0ます。すべてのビットを表示するように強制する方法はありますか?

これは私のコードです:

long l = 1;
System.out.println(Long.toBinaryString((long)l));

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;
}
4

3 に答える 3

9

あなたはこれを行うことができます

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

これにより、4つの数字の間にスペースがない場合を除いて、必要なものが得られます(ただし、コーディングできるはずです)。Formatterを使用してこれを自動的に行う方法があるかもしれませんが、 見つかりませんでした。

編集:

必要な0の数がわかっている場合は、formatメソッドを使用できますString's(これを数に戻すのを忘れたため、例外が修正されます)。

String.format("%032d", new BigInteger(Long.toBinaryString((long)l)));
于 2012-05-01T17:11:46.323 に答える
0

Apache Commons StringUtilを使用する場合は、次のように実行できます。

    long l = 1;
    System.out.println( StringUtils.leftPad( Long.toBinaryString( l ), 64, "0" ) );
于 2012-05-01T17:27:04.403 に答える
-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
于 2018-03-23T17:42:59.393 に答える