Converting a number to binary with a fixed length

Viewed 57196

Say I get a random number between 1 and 127. I change the number to binary and remove the 0b from it with the following code:

key_one= int(raw_input("Enter key (0 <= key <= 127): "))

if key_one in range(128):
    bin_key_one=bin(key_one)[2:]
print bin_key_one
else:
    print "You have to enter key (0 <= key <= 127)"

Now I want to make it 7-characters long by padding the beginning with zeros as necessary. I think I need to use a for loop, but can someone show me how to do it?

7 Answers

If you want variable length:

>>> n = 12
>>> l = 7
>>> bin(n)[2:].zfill(l)
'0001100'

You can use str.rjust too if you want to be flexible on the character to use as padding rather than just 0:

>>> s = '111'
>>> s.rjust(8, '0')
'00000111'
>>> s.rjust(8, 'x')
'xxxxx111'

Once for my project i needed to convert an integer to binary with variable length of binary string so i did

num_bits = 12
num = 4
f'{num:0{num_bits}b}'

Output
000000000100

Related