En Python, la conversion d'une chaîne en sa représentation binaire est simple. En utilisant une combinaison de réduire(), lambda, ord() et bin(), l'équivalent binaire d'une chaîne peut être obtenu. Cependant, cette approche nécessite un épissage manuel des chaînes et un mappage avec les valeurs ASCII correspondantes.
Pour Python 2, une méthode plus concise est disponible à l'aide du module binascii :
import binascii bin(int(binascii.hexlify('hello'), 16))
Cette méthode convertit les caractères ASCII dans la plage [-~, similaire au code original. Pour la reconversion en chaîne :
binascii.unhexlify('%x' % n)
Dans Python 3.2 et versions ultérieures, le type bytes offre une commodité supplémentaire :
bin(int.from_bytes('hello'.encode(), 'big'))
Pour la reconversion à une chaîne :
n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
Pour prendre en charge tous les caractères Unicode dans Python 3, la fonction suivante peut être utilisée :
def text_to_bits(text, encoding='utf-8', errors='surrogatepass'): bits = bin(int.from_bytes(text.encode(encoding, errors), 'big'))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits, encoding='utf-8', errors='surrogatepass'): n = int(bits, 2) return n.to_bytes((n.bit_length() + 7) // 8, 'big').decode(encoding, errors) or '<pre class="brush:php;toolbar:false">import binascii def text_to_bits(text, encoding='utf-8', errors='surrogatepass'): bits = bin(int(binascii.hexlify(text.encode(encoding, errors)), 16))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits, encoding='utf-8', errors='surrogatepass'): n = int(bits, 2) return int2bytes(n).decode(encoding, errors) def int2bytes(i): hex_string = '%x' % i n = len(hex_string) return binascii.unhexlify(hex_string.zfill(n + (n & 1)))
Pour la compatibilité Python 2/3 :
Avec ceux-ci fonctions, la conversion entre les chaînes binaires et Unicode devient sans effort dans Python 2 et Python 3.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!