Ответы:
>>> '{0:08b}'.format(6)
'00000110'
Просто, чтобы объяснить части строки форматирования:
{}
помещает переменную в строку0
принимает переменную в позиции аргумента 0:
добавляет параметры форматирования для этой переменной (иначе она будет представлять десятичную 6
)08
форматирует число до восьми цифр с нулями слеваb
преобразует число в двоичное представлениеЕсли вы используете версию Python 3.6 или выше, вы также можете использовать f-строки:
>>> f'{6:08b}'
'00000110'
0
означает 0th
аргумент format
. После форматирования двоеточия второе 0
означает заполнение нулями до 8 пробелов, а b
для двоичного
format()
функцией : format(6, '08b')
; функция принимает значение (к {..}
которому относится слот) и спецификацию форматирования (что бы вы не указали после :
в строке форматирования).
Просто еще одна идея:
>>> bin(6)[2:].zfill(8)
'00000110'
Более короткий путь с помощью интерполяции строк ( Python 3.6+ ):
>>> f'{6:08b}'
'00000110'
bin(-6)[2:].zfill(8)
читается как'0000b110'
Немного сложный метод ...
>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) )
>>> bin8(6)
'00000110'
>>> bin8(-3)
'11111101'
x
вправо и с помощью AND 1
, эффективно выделяя один бит (0 или 1) за раз.
Ответ eumiro лучше, но я просто публикую это для разнообразия:
>>> "%08d" % int(bin(6)[2:])
00000110
'%08x' % int(bin(6)[2:], 16)
numpy.binary_repr(num, width=None)
имеет аргумент волшебной шириныСоответствующие примеры из документации, указанной выше:
>>> np.binary_repr(3, width=4) '0011'
Дополнение к двум возвращается, когда входное число отрицательно и указана ширина:
>>> np.binary_repr(-3, width=5) '11101'
Going Old School всегда работает
def intoBinary(number):
binarynumber=""
if (number!=0):
while (number>=1):
if (number %2==0):
binarynumber=binarynumber+"0"
number=number/2
else:
binarynumber=binarynumber+"1"
number=(number-1)/2
else:
binarynumber="0"
return "".join(reversed(binarynumber))
number=number/2
дает поплавок, так что number=number//2
швы лучше, также я бы заменил number=number//2
на number//=2
и b=b+"0"
сb+="0"
('0' * 7 + bin(6)[2:])[-8:]
или
right_side = bin(6)[2:]
'0' * ( 8 - len( right_side )) + right_side
Предполагая, что вы хотите проанализировать количество цифр, используемых для представления, из переменной, которая не всегда постоянна, хорошим способом будет использование numpy.binary.
может быть полезно, когда вы применяете бинарный к силовым установкам
import numpy as np
np.binary_repr(6, width=8)
Лучший способ - указать формат.
format(a, 'b')
возвращает двоичное значение в формате строки.
Чтобы преобразовать двоичную строку обратно в целое число, используйте функцию int ().
int('110', 2)
возвращает целочисленное значение двоичной строки.
def int_to_bin(num, fill):
bin_result = ''
def int_to_binary(number):
nonlocal bin_result
if number > 1:
int_to_binary(number // 2)
bin_result = bin_result + str(number % 2)
int_to_binary(num)
return bin_result.zfill(fill)