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;
}
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)));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With