Esta es el arreglo más válida que encomtrarás aportar, sin embargo estúdiala detenidamente y valora si se puede adaptar a tu proyecto.
Solución:
Utilizar el format()
función:
>>> format(14, '#010b')
'0b00001110'
los format()
La función simplemente formatea la entrada siguiendo el minilenguaje de especificación de formato. los #
hace que el formato incluya el 0b
prefixy el 010
size formatea la salida para que quepa en 10 caracteres de ancho, con 0
relleno; 2 caracteres para el 0b
prefixlos otros 8 para los dígitos binarios.
Esta es la opción más compacta y directa.
Si está poniendo el resultado en un tamaño más grande stringuse un formato string literal (3.6+) o uso str.format()
y poner el segundo argumento para el format()
función después de los dos puntos del marcador de posición :..
:
>>> 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'
Da la casualidad de que, incluso para dar formato a un único valor (por lo que sin poner el resultado en un mayor string), usando un formato string literal es más rápido 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
Pero usaría eso solo si el rendimiento en un ciclo cerrado importa, como format(...)
comunica mejor la intención.
Si no querías la 0b
prefixsimplemente suelte el #
y ajustar la longitud del campo:
>>> format(14, '08b')
'00001110'
>>> ':08b'.format(1)
'00000001'
Ver: Especificación de formato Mini-idioma
Nota para Python 2.6 o anterior, no puede omitir el identificador de argumento posicional antes :
así que usa
>>> '0:08b'.format(1)
'00000001'
estoy usando
bin(1)[2:].zfill(8)
imprimirá
'00000001'
Comentarios y valoraciones de la guía
Si entiendes que ha sido de utilidad nuestro post, sería de mucha ayuda si lo compartieras con otros entusiastas de la programación y nos ayudes a difundir este contenido.