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

bab*_*kar 20 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)"
Run Code Online (Sandbox Code Playgroud)

现在我想通过在必要时用零填充开头来使它长7个字符.我想我需要使用for循环,但是有人可以告诉我该怎么做吗?

Ign*_*ams 56

不,你没有.

>>> '{0:07b}'.format(12)
'0001100'
Run Code Online (Sandbox Code Playgroud)

  • 现在是“f”{12:07b}“” (2认同)
  • 如何用一些变量“length”替换 7? (2认同)
  • f'{num:0{num_bits}b}'。编辑:添加作为此问题的答案 (2认同)

Nas*_*nov 26

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

>>> '1'.zfill(7)
'0000001'
>>> '10010'.zfill(7)
'0010010'
Run Code Online (Sandbox Code Playgroud)


cja*_*vin 5

使用 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)")
Run Code Online (Sandbox Code Playgroud)