[英]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.