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.
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.
La méthode de format chaîne de Python peut prendre une spécification de format.
>>> "{0:b}".format(10)
'1010'
Si vous cherchez bin()
comme équivalent à hex()
, il a été ajouté dans python 2.6.
Exemple:
>>> bin(10)
'0b1010'
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):
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'
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 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.