Utilisez la format()
fonction :
>>> format(14, '#010b')
'0b00001110'
La format()
fonction formate simplement l'entrée en suivant le mini-langage Format Specification . Le #
fait que le format inclut le 0b
préfixe, et la 010
taille formate la sortie pour qu'elle tienne dans une largeur de 10 caractères, avec un 0
remplissage; 2 caractères pour le 0b
préfixe, les 8 autres pour les chiffres binaires.
C'est l'option la plus compacte et la plus directe.
Si vous mettez le résultat dans une chaîne plus grande, utilisez un littéral de chaîne formaté (3.6+) ou utilisez str.format()
et mettez le deuxième argument de la format()
fonction après les deux points de l'espace réservé {:..}
:
>>> 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'
En l'occurrence, même pour simplement formater une seule valeur (donc sans mettre le résultat dans une chaîne plus grande), utiliser une chaîne littérale formatée est plus rapide que d'utiliser 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
Mais je n'utiliserais cela que si les performances dans une boucle serrée comptent, car elles format(...)
communiquent mieux l'intention.
Si vous ne vouliez pas le 0b
préfixe, déposez simplement le #
et ajustez la longueur du champ:
>>> format(14, '08b')
'00001110'