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!