Heim >Backend-Entwicklung >Python-Tutorial >Wie konvertiert man effizient zwischen Binär und ASCII in Python?

Wie konvertiert man effizient zwischen Binär und ASCII in Python?

Barbara Streisand
Barbara StreisandOriginal
2024-12-05 15:10:11954Durchsuche

How to Efficiently Convert Between Binary and ASCII in Python?

Konvertieren zwischen Binär und ASCII

Der bereitgestellte Code wandelt eine Zeichenfolge mithilfe einer Reduktions-Lambda-Funktion in Binär um. Allerdings ist die Methode zum Konvertieren von Binärzeichen zurück in ASCII nicht sofort ersichtlich.

Python 2 (Für ASCII-Zeichen)

Für ASCII-Zeichen im Bereich [ -~] , Python 2 bietet eine einfache Lösung:

import binascii
bin(int(binascii.hexlify('hello'), 16))
# Output: '0b110100001100101011011000110110001101111'

Um das umzukehren Prozess:

n = int('0b110100001100101011011000110110001101111', 2)
binascii.unhexlify('%x' % n)
# Output: 'hello'

Python 3 (Alle Unicode-Zeichen)

Python 3 führte die Unterstützung für alle Unicode-Zeichen ein. Die folgenden Funktionen bieten eine einheitliche Konvertierungsschnittstelle:

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

Unicode-fähige Konvertierung

Abschließend finden Sie hier für die Kompatibilität mit Python 2 und 3 ein Single-Source-Code-Snippet das die Unicode-Konvertierung übernimmt:

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

Das obige ist der detaillierte Inhalt vonWie konvertiert man effizient zwischen Binär und ASCII in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn