Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Howto print Long in Binary?

Tags:

java

I am trying to print a Long in Binary, but it keeps cutting off 0's. Is there a way to force it to show all bits?

This is my code:

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

Returns as mentioned only 1 due to removed 0's i wish to maintain:

0000 0000 0000 0000 0000 0000 0000 0001

Thanks in advance.

My temporary nasty solution:

public String fillZeros(Long value) 
{
    String str = Long.toBinaryString((long) value);
    String temp;
    temp = str;
    while(temp.length() < 32) {
        temp = "0" + temp;
    }
    return temp;
}
like image 220
JavaCake Avatar asked May 01 '12 16:05

JavaCake


1 Answers

you can do this

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

That will get what you want except without the spaces between every 4 numbers (you should be able to code that though). There might be a way to do this automatically with a Formatter but I couldn't find it.

Edit:

you can use String's format method if you know the number of 0's you need (I forgot to change it back into a number this will fix the Exception).

String.format("%032d", new BigInteger(Long.toBinaryString((long)l)));
like image 89
twain249 Avatar answered Sep 26 '22 00:09

twain249