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

Comment convertir efficacement entre binaire et ASCII en Python ?

Barbara Streisand
Libérer: 2024-12-05 15:10:11
original
965 Les gens l'ont consulté

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

Pour inverser le processus :

n = int('0b110100001100101011011000110110001101111', 2)
binascii.unhexlify('%x' % n)
# Output: 'hello'
Copier après la connexion

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

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

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