Maison > développement back-end > Tutoriel Python > Comment convertir efficacement du binaire en ASCII et vice versa en Python ?

Comment convertir efficacement du binaire en ASCII et vice versa en Python ?

Linda Hamilton
Libérer: 2024-11-28 10:06:13
original
200 Les gens l'ont consulté

How to Efficiently Convert Binary to ASCII and Vice Versa in 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))
Copier après la connexion

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)
Copier après la connexion

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()
Copier après la connexion

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 &amp; 1)))
Copier après la connexion
'

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal