Как отформатировать int в битовую строку длиной n с помощью функции format в Python

#python #binary #data-conversion

#python #двоичный файл #преобразование данных

Вопрос:

Я пытаюсь преобразовать an int в двоичную строку длины n с помощью format функции. Я знаю, как это сделать для фиксированного значения n , скажем n=3 , и я хочу преобразовать целое 6 число в битовую строку длины n=3 , тогда я смогу это сделать format(6, '03b') .

Могу ли я узнать, как сделать то же самое для любого заданного n ? Очевидно, что я не могу этого сделать format(6,'0nb') . Итак, мне интересно, как это решить?

Комментарии:

1. Снова открыт. @q2w3e4, не могли бы вы объяснить, где вы застряли? Присвоите переменной n и подключите эту переменную ко второму аргументу to format() .

2. @BradSolomon Я не знаю, как передать переменную n во второй аргумент format() .

3. format(6, f'0{n}b') …?

Ответ №1:

Вы можете использовать форматированную строку для динамической вставки числа n в строку:

 n = 6
format(6, f'0{n}b')
 

Ответ №2:

Этот ответ, возможно, немного ошибочен, но в нем используется точное количество битов, необходимых для представления значения, а не фиксированное значение, подобное format(x, f"{n}b") . Где x — некоторое число, а n — количество битов.

 import math

n = 6 # your number
format(n, f'0{int(math.log2(n))}b')
 

Здесь n есть число, как x и раньше, а его нет n , потому что мы динамически вычисляем нужное количество битов для повторения n

Комментарии:

1. Это кажется искаженным способом выполнения format(n, f"0{n.bit_length()}b") и пропускает import .