web-dev-qa-db-fra.com

Conversion d'un entier en binaire en python

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?

131
Smith
>>> '{0:08b}'.format(6)
'00000110'

Juste pour expliquer les parties de la chaîne de formatage:

  • {} place une variable dans une chaîne
  • 0 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 gauche
  • b convertit le nombre en sa représentation binaire

Si 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'
283
eumiro

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'
85
mshsayem

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'
17
sobel

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>")
12
theOne

la réponse d'eumiro est meilleure, mais je poste simplement ceci pour la variété:

>>> "%08d" % int(bin(6)[2:])
00000110
8
jedwards

.. 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'
5
thebjorn

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))
1
Shadrack Kimutai
('0' * 7 + bin(6)[2:])[-8:]

ou

right_side = bin(6)[2:]
'0' * ( 8 - len( right_side )) + right_side
0
zerg

numpy.binary_repr(num, width=None) a un argument de largeur magique

Exemples 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'
0
Tom Hale