Afin de convertir un entier en binaire, j'ai utilisé ce code:
>>> bin(6)
'0b110'
et quand effacer le '0b', j'utilise ceci:
>>> bin(6)[2:]
'110'
Que puis-je faire si je veux montrer 6
comme 00000110
au lieu de 110
?
>>> '{0:08b}'.format(6)
'00000110'
Juste pour expliquer les parties de la chaîne de formatage:
{}
place une variable dans une chaîne0
prend la variable à la position d'argument 0:
ajoute des options de formatage pour cette variable (sinon, cela représenterait un décimal 6
)08
formate le nombre à huit chiffres, complété par un zéro sur la gaucheb
convertit le nombre en sa représentation binaireSi vous utilisez une version de Python version 3.6 ou ultérieure, vous pouvez également utiliser des chaînes de caractères f:
>>> f'{6:08b}'
'00000110'
Juste une autre idée:
>>> bin(6)[2:].zfill(8)
'00000110'
Plus court chemin par interpolation de chaîne (Python 3.6+):
>>> f'{6:08b}'
'00000110'
Une méthode un peu tournoyante ...
>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) )
>>> bin8(6)
'00000110'
>>> bin8(-3)
'11111101'
Il suffit d'utiliser la fonction de formatage
format(6, "08b")
La forme générale est
format(<the_integer>, "<0><width_of_string><format_specifier>")
la réponse d'eumiro est meilleure, mais je poste simplement ceci pour la variété:
>>> "%08d" % int(bin(6)[2:])
00000110
.. ou si vous n'êtes pas sûr que cela devrait toujours être 8 chiffres, vous pouvez le passer en paramètre:
>>> '%0*d' % (8, int(bin(6)[2:]))
'00000110'
Going Old School fonctionne toujours
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))
('0' * 7 + bin(6)[2:])[-8:]
ou
right_side = bin(6)[2:]
'0' * ( 8 - len( right_side )) + right_side
numpy.binary_repr(num, width=None)
a un argument de largeur magiqueExemples pertinents tirés de la documentation liée ci-dessus:
>>> np.binary_repr(3, width=4) '0011'
Le complément à deux est renvoyé lorsque le nombre saisi est négatif et que la largeur est spécifiée:
>>> np.binary_repr(-3, width=5) '11101'