#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
и подключите эту переменную ко второму аргументу toformat()
.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
.