["python","binary","formatting","bitwise-operators"]
Convert to binary and keep leading zeros

I'm trying to convert an integer to binary using the bin() function in Python. However, it always removes the leading zeros, which I actually need, such that the result is always 8-bit: Example: bin(1) -> 0b1 # What I would like: bin(1) -> 0b00000001 Is there a way of doing this?
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 performance 0.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'