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

37 投票
9 回答
72902 浏览
提问于 2025-04-16 01:19

假设我得到一个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个字符长,如果不够的话,就在前面加上零。我觉得我需要用一个循环,但能不能有人教我怎么做?

9 个回答

6

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

其实,Python 有一个字符串的方法叫做 .zfill(),可以用来处理这个问题:

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

不,你不需要这样做。

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

撰写回答