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
Barbara Streisandoriginal
2024-12-05 15:10:11919parcourir

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'

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!

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