734 votes

Python int à binaire?

Existe-t-il des méthodes Python en boîte pour convertir un entier (ou long) en une chaîne binaire en Python?

Il existe une myriade de fonctions dec2bin () sur Google ... Mais j'espérais pouvoir utiliser une fonction / bibliothèque intégrée.

1001voto

Tung Nguyen Points 2387

La méthode de format chaîne de Python peut prendre une spécification de format.

 >>> "{0:b}".format(10)
'1010'
 

Formats de documents de spécification pour Python 2

Formater les documents de spécification pour Python 3

611voto

John Fouhy Points 14700

Si vous cherchez bin() comme équivalent à hex() , il a été ajouté dans python 2.6.

Exemple:

 >>> bin(10)
'0b1010'
 

69voto

paxdiablo Points 341644

Pas de langage ou de la bibliothèque donnera à son utilisateur de la base de tout ce qu'ils désirent, bien que Boost peut prétendre :-) Vous devez collecter des bouts de code que vous développez pour vous assurer de ne jamais avoir à écrire deux fois la même chose.

Tels que:

def bin(i):
    if i == 0:
        return "0"
    s = ''
    while i:
        if i & 1 == 1:
            s = "1" + s
        else:
            s = "0" + s
        i >>= 1
    return s

qui va construire votre chaîne binaire basée sur la valeur décimale.

L'idée est d'utiliser le code à partir de (dans l'ordre de préférence):

  • la langue.
  • les bibliothèques.
  • les bibliothèques de tiers approprié de licences.
  • votre propre collection.
  • quelque chose de nouveau, vous devez écrire (et les enregistrer dans votre collection pour plus tard).

58voto

moose Points 4945

Si vous voulez une représentation textuelle sans le préfixe 0b, vous pouvez utiliser ceci:

 getBin = lambda x: x >= 0 and str(bin(x))[2:] or "-" + str(bin(x))[3:]

print(getBin(3))
>>> 11

print(getBin(-3))
>>> -11
 

Lorsque vous voulez une représentation en n bits:

 getBin = lambda x, n: x >= 0 and str(bin(x))[2:].zfill(n) or "-" + str(bin(x))[3:].zfill(n)
>>> getBin(12,32)
'00000000000000000000000000001100'
>>> getBin(-12,32)
'-00000000000000000000000000001100'
 

41voto

kctong529 Points 113

Pour référence:

 def toBinary(n):
    return ''.join(str(1 & int(n) >> i) for i in range(64)[::-1])
 

Cette fonction peut convertir un entier positif aussi grand que 18446744073709551615 , représenté par une chaîne '1111111111111111111111111111111111111111111111111111111111111111' .

Il peut être modifié pour servir un entier beaucoup plus grand, bien qu'il ne soit pas aussi pratique que "{0:b}".format() ou bin() .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X