将数字转换为具有固定长度的二进制数

时间:2010-07-15 04:45:57

标签: python for-loop

假设我得到1到127之间的随机数。我将数字更改为二进制,并使用以下代码从中删除0b

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循环,但有人可以告诉我该怎么做吗?

5 个答案:

答案 0 :(得分:50)

不,你没有。

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

答案 1 :(得分:24)

所以碰巧Python有一个字符串方法.zfill()

>>> '1'.zfill(7)
'0000001'
>>> '10010'.zfill(7)
'0010010'

答案 2 :(得分:1)

使用Python 3.6的新f-strings,您现在可以执行以下操作:

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)")

答案 3 :(得分:0)

如果你想要可变长度:

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

答案 4 :(得分:-1)

试试这个:

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