Maison >développement back-end >Tutoriel Python >Comment convertir efficacement entre binaire et ASCII en Python ?
Conversion entre binaire et ASCII
Le code fourni convertit une chaîne en binaire à l'aide d'une fonction lambda de réduction. Cependant, la méthode de reconversion binaire en ASCII n'est pas immédiatement apparente.
Python 2 (pour les caractères ASCII)
Pour les caractères ASCII dans la plage [ -~] , Python 2 propose une solution simple :
import binascii bin(int(binascii.hexlify('hello'), 16)) # Output: '0b110100001100101011011000110110001101111'
Pour inverser le processus :
n = int('0b110100001100101011011000110110001101111', 2) binascii.unhexlify('%x' % n) # Output: 'hello'
Python 3 (tous les caractères Unicode)
Python 3 a introduit la prise en charge de tous les caractères Unicode. Les fonctions suivantes fournissent une interface de conversion unifiée :
def text_to_bits(text): bits = bin(int.from_bytes(text.encode(), 'big'))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits): n = int(bits, 2) return n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
Conversion compatible Unicode
Enfin, pour la compatibilité Python 2 et 3, voici un extrait de code source unique qui gère la conversion Unicode :
def text_to_bits(text): bits = bin(int(binascii.hexlify(text.encode()), 16))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits): n = int(bits, 2) return int2bytes(n).decode() def int2bytes(i): hex_string = '%x' % i n = len(hex_string) return binascii.unhexlify(hex_string.zfill(n + (n & 1)))
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!