Je suis à la recherche d'un moyen d'obtenir la représentation binaire d'une chaîne de caractères en python, par exemple
st = "hello world"
toBinary(st)
Existe-t-il un module permettant de réaliser cette opération ?
Je suis à la recherche d'un moyen d'obtenir la représentation binaire d'une chaîne de caractères en python, par exemple
st = "hello world"
toBinary(st)
Existe-t-il un module permettant de réaliser cette opération ?
def method_a(sample_string):
binary = ' '.join(format(ord(x), 'b') for x in sample_string)
def method_b(sample_string):
binary = ' '.join(map(bin,bytearray(sample_string,encoding='utf-8')))
if __name__ == '__main__':
from timeit import timeit
sample_string = 'Convert this ascii strong to binary.'
print(
timeit(f'method_a("{sample_string}")',setup='from __main__ import method_a'),
timeit(f'method_b("{sample_string}")',setup='from __main__ import method_b')
)
# 9.564299999998184 2.943955828988692
method_b est nettement plus efficace pour convertir en un tableau d'octets, car il effectue des appels de fonctions de bas niveau au lieu de transformer manuellement chaque caractère en un nombre entier, puis de convertir ce nombre entier en sa valeur binaire.
Il s'agit d'une mise à jour pour les réponses existantes qui utilisaient bytearray()
et ne peut plus travailler de cette façon :
>>> st = "hello world"
>>> map(bin, bytearray(st))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string argument without an encoding
Parce que, comme expliqué dans le lien ci-dessus, si la source est une chaîne, vous devez également donner l'encodage :
>>> map(bin, bytearray(st, encoding='utf-8'))
<map object at 0x7f14dfb1ff28>
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.