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 0bpréfixe, et la 010taille formate la sortie pour qu'elle tienne dans une largeur de 10 caractères, avec un 0remplissage; 2 caractères pour le 0bpré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 0bpréfixe, déposez simplement le #et ajustez la longueur du champ:
>>> format(14, '08b')
'00001110'