繁体   English   中英

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

[英]Converting a number to binary with a fixed length

假设我得到一个介于 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 循环,但有人可以告诉我怎么做吗?

不,你没有。

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

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

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

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

如果你想要可变长度:

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

如果您想灵活地将字符用作填充而不仅仅是0 ,您也可以使用str.rjust

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

一次对于我的项目,我需要将整数转换为二进制字符串可变长度的二进制,所以我做了

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

输出
000000000100

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM