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
Linda Hamiltonoriginal
2024-11-28 10:06:13187parcourir

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))

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 &amp; 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!

Déclaration:
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