Вопрос-Ответ

Convert int to binary string in Python

Преобразовать int в двоичную строку в Python

Как мне преобразовать целое число в двоичную строку в Python?

37'100101'
Переведено автоматически
Ответ 1

Метод string format в Python может принимать спецификацию формата.

>>> "{0:b}".format(37)
'100101'

Форматирование документации спецификации для Python 2

Форматирование документации спецификации для Python 3

Ответ 2

Если вы ищете bin() эквивалент hex(), он был добавлен в python 2.6.

Пример:

>>> bin(10)
'0b1010'
Ответ 3

На самом деле в Python действительно уже есть что-то встроенное для этого, возможность выполнять такие операции, как '{0:b}'.format(42), которые дадут вам битовый шаблон (в строке) для 42, или 101010.


Если придерживаться более общей философии, то ни один язык или библиотека не предоставит своим пользователям все, что они пожелают. Если вы работаете в среде, которая предоставляет не совсем то, что вам нужно, вам следует собирать фрагменты кода по мере разработки, чтобы вам никогда не приходилось писать одно и то же дважды. Например, псевдокод:

define intToBinString, receiving intVal:
if intVal is equal to zero:
return "0"
set strVal to ""
while intVal is greater than zero:
if intVal is odd:
prefix "1" to strVal
else:
prefix "0" to strVal
divide intVal by two, rounding down
return strVal

который построит вашу двоичную строку на основе десятичного значения. Просто имейте в виду, что это общий фрагмент псевдокода, который может быть не самым эффективным способом сделать это, хотя, с итерациями, которые вы, кажется, предлагаете, это не будет иметь большого значения. На самом деле это просто руководство по тому, как это можно сделать.

Общая идея заключается в использовании кода из (в порядке предпочтения):


  • язык или встроенные библиотеки.

  • библиотеки сторонних производителей с подходящими лицензиями.

  • ваша собственная коллекция.

  • вам нужно написать что-то новое (и сохранить в вашей собственной коллекции на потом).

Ответ 4

Если вам нужно текстовое представление без 0b-префикса, вы могли бы использовать это:

get_bin = lambda x: format(x, 'b')

print(get_bin(3))
>>> '11'

print(get_bin(-3))
>>> '-11'

Когда вам нужно n-битное представление:

get_bin = lambda x, n: format(x, 'b').zfill(n)
>>> get_bin(12, 32)
'00000000000000000000000000001100'
>>> get_bin(-12, 32)
'-00000000000000000000000000001100'

В качестве альтернативы, если вы предпочитаете иметь функцию:

def get_bin(x, n=0):
"""
Get the binary representation of x.

Parameters
----------
x : int
n : int
Minimum number of digits. If x needs less digits in binary, the rest
is filled with zeros.

Returns
-------
str
"""

return format(x, 'b').zfill(n)
2023-08-07 08:47 python