Convert to binary and keep leading zeros Convert to binary and keep leading zeros python python

Convert to binary and keep leading zeros


Use the format() function:

>>> format(14, '#010b')'0b00001110'

The format() function simply formats the input following the Format Specification mini language. The # makes the format include the 0b prefix, and the 010 size formats the output to fit in 10 characters width, with 0 padding; 2 characters for the 0b prefix, the other 8 for the binary digits.

This is the most compact and direct option.

If you are putting the result in a larger string, use an formatted string literal (3.6+) or use str.format() and put the second argument for the format() function after the colon of the placeholder {:..}:

>>> value = 14>>> f'The produced output, in binary, is: {value:#010b}''The produced output, in binary, is: 0b00001110'>>> 'The produced output, in binary, is: {:#010b}'.format(value)'The produced output, in binary, is: 0b00001110'

As it happens, even for just formatting a single value (so without putting the result in a larger string), using a formatted string literal is faster than using format():

>>> import timeit>>> timeit.timeit("f_(v, '#010b')", "v = 14; f_ = format")  # use a local for performance0.40298633499332936>>> timeit.timeit("f'{v:#010b}'", "v = 14")0.2850222919951193

But I'd use that only if performance in a tight loop matters, as format(...) communicates the intent better.

If you did not want the 0b prefix, simply drop the # and adjust the length of the field:

>>> format(14, '08b')'00001110'


>>> '{:08b}'.format(1)'00000001'

See: Format Specification Mini-Language


Note for Python 2.6 or older, you cannot omit the positional argument identifier before :, so use

>>> '{0:08b}'.format(1)'00000001'      


I am using

bin(1)[2:].zfill(8)

will print

'00000001'