关于python:将数字转换为固定长度的二进制

Converting a number to binary with a fixed length

假设我得到一个介于1和127之间的随机数。我将数字改为二进制,并用fallowing代码从中删除0b

1
2
3
4
5
6
7
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)"

现在我想让它7个字符长,必要时用零填充开头。我想我需要使用for循环,但是有人能告诉我怎么做吗?


不,你没有。

1
2
>>> '{0:07b}'.format(12)
'0001100'


因此,python有一个字符串方法.zfill(),用于:

1
2
3
4
>>> '1'.zfill(7)
'0000001'
>>> '10010'.zfill(7)
'0010010'


使用Python3.6的新F字符串,现在可以执行以下操作:

1
2
3
4
5
6
7
key_one = int(input("Enter key (0 <= key <= 127):"))

if key_one in range(128):
    bin_key_one = f'{key_one:07b}'
    print(bin_key_one)
else:
    print("You have to enter key (0 <= key <= 127)")

试试这个:

1
2
for i in range(1, 127):
'0'*(7-len(bin(i)[2:]))+bin(i)[2:]