Use a format()
função :
>>> format(14, '#010b')
'0b00001110'
A format()
função simplesmente formata a entrada seguindo o mini idioma de especificação de formato . A #
faz com que o formato incluem o 0b
prefixo, e o 010
tamanho formata a saída para se ajustar em 10 caracteres largura, com 0
enchimento; 2 caracteres para o 0b
prefixo, os outros 8 para os dígitos binários.
Esta é a opção mais compacta e direta.
Se você estiver colocando o resultado em uma string maior, use uma literal de string formatada (3.6+) ou use str.format()
e coloque o segundo argumento para a format()
função após os dois pontos do espaço reservado {:..}
:
>>> value = 14
>>> f'The produced output, in binary, is: {value:#010b}'
'The produced output, in binary, is: 0b00001110'
>>> 'The produced output, in binary, is: {:#010b}'.format(value)
'The produced output, in binary, is: 0b00001110'
Por acaso, mesmo para formatar apenas um único valor (portanto, sem colocar o resultado em uma string maior), o uso de uma literal de string formatada é mais rápido do que usar format()
:
>>> import timeit
>>> timeit.timeit("f_(v, '#010b')", "v = 14; f_ = format") # use a local for performance
0.40298633499332936
>>> timeit.timeit("f'{v:#010b}'", "v = 14")
0.2850222919951193
Mas eu usaria isso apenas se o desempenho em um loop apertado for importante, pois format(...)
comunica melhor a intenção.
Se você não quis o 0b
prefixo, simplesmente solte #
e ajuste o comprimento do campo:
>>> format(14, '08b')
'00001110'