Преобразование числа в двоичное с фиксированной длиной - PullRequest
16 голосов
/ 15 июля 2010

Скажем, я получил случайное число от 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, но кто-то может показать мне, как это сделать?

Ответы [ 4 ]

52 голосов
/ 15 июля 2010

Нет, нет.

>>> '{0:07b}'.format(12)
'0001100'
24 голосов
/ 15 июля 2010

Так что у Python есть строковый метод .zfill() для этого:

>>> '1'.zfill(7)
'0000001'
>>> '10010'.zfill(7)
'0010010'
1 голос
/ 15 декабря 2017

С новыми f-строками в Python 3.6 вы можете:

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)")
0 голосов
/ 15 июля 2010

Попробуйте это:

for i in range(1, 127):
'0'*(7-len(bin(i)[2:]))+bin(i)[2:]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...