Maison >développement back-end >Tutoriel Python >Comment convertir efficacement du binaire en ASCII et vice versa en Python ?
Convertir le binaire en ASCII et vice versa
La conversion entre le binaire et l'ASCII est essentielle pour l'encodage et le décodage des données numériques. Voici des méthodes pour effectuer cette conversion efficacement en Python, en répondant aux défis que vous avez mentionnés :
Conversion d'une chaîne en binaire
Pour convertir une chaîne en binaire, vous pouvez utiliser :
import binascii bin(int(binascii.hexlify('hello'), 16))
Cela convertit la chaîne en représentation hexadécimale puis en binaire, produisant le même résultat que vous obtenu.
Conversion de binaire en chaîne
Pour la conversion de binaire en chaîne, utilisez :
n = int('0b110100001100101011011000110110001101111', 2) binascii.unhexlify('%x' % n)
Cela transforme la chaîne binaire en hexadécimal valeur, puis la décode en chaîne d'origine.
Python 3.2 Compatibilité
Dans Python 3.2 et supérieur, vous pouvez utiliser les méthodes suivantes :
bin(int.from_bytes('hello'.encode(), 'big')) n = int('0b110100001100101011011000110110001101111', 2) n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
Ces méthodes utilisent les fonctions int.from_bytes() et int.to_bytes(), fournissant un moyen efficace de gérer les données binaires.
Prise en charge des caractères Unicode (Python 3)
Pour gérer les caractères Unicode dans Python 3, utilisez :
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)))'
Ces fonctions encodent et décodent le texte avec un encodage et une gestion des erreurs spécifiés, garantissant la gestion correcte d'Unicode caractères.
Version compatible Python 2/3 à source unique
Ceci le code est compatible avec Python 2 et 3 :
Ce code gère les deux versions de Python tout en fournissant un ensemble cohérent de fonctions pour les conversions binaires et ASCII.
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!