Conversion d'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?

117
demandé sur jamylak 2012-05-02 13:31:41

8 réponses

>>> '{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 de l'argument 0
  • : ajoute des options de formatage pour cette variable (sinon elle représenterait decimal 6)
  • 08 formate le nombre à huit chiffres zero-rembourré sur la gauche
  • b convertit le nombre en sa représentation binaire
256
répondu eumiro 2017-05-13 07:21:47

Juste une autre idée:

>>> bin(6)[2:].zfill(8)
'00000110'

Chemin plus court via interpolation de chaîne (Python 3.6+):

>>> f'{6:08b}'
'00000110'
80
répondu mshsayem 2018-01-10 06:33:29

Un peu tourner la méthode...

>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) )
>>> bin8(6)
'00000110'
>>> bin8(-3)
'11111101'
15
répondu sobel 2018-02-18 11:41:29

Utilisez simplement la fonction de format

format(6, "08b")

La forme générale est

format(<the_integer>, "<0><width_of_string><format_specifier>")
10
répondu theOne 2016-04-07 20:16:08

La réponse D'Eumiro est meilleure, mais je ne fais que poster ceci pour variety:

>>> "%08d" % int(bin(6)[2:])
00000110
5
répondu jedwards 2012-05-02 09:35:17

.. ou si vous n'êtes pas sûr qu'il devrait toujours être de 8 chiffres, vous pouvez le passer en paramètre:

>>> '%0*d' % (8, int(bin(6)[2:]))
'00000110'
5
répondu thebjorn 2012-05-02 09:47:30

Aller à la vieille école 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
répondu Shadychiri 2018-06-08 16:40:11

('0' * 7 + bin(6)[2:])[-8:]

Ou

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

0
répondu zerg 2018-09-05 00:07:31