Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python effizient zwischen Binär und ASCII (einschließlich Unicode) konvertieren?
In Python ist das Konvertieren einer Zeichenfolge in ihre binäre Darstellung unkompliziert. Mit einer Kombination aus Reduce(), Lambda, Ord() und Bin() kann das binäre Äquivalent einer Zeichenfolge ermittelt werden. Dieser Ansatz erfordert jedoch manuelles String-Splicing und Mapping auf die entsprechenden ASCII-Werte.
Für Python 2 ist eine prägnantere Methode mit dem Binascii-Modul verfügbar:
import binascii bin(int(binascii.hexlify('hello'), 16))
Diese Methode konvertiert die ASCII-Zeichen im Bereich [-~, ähnlich dem Originalcode. Für die Rückkonvertierung in einen String:
binascii.unhexlify('%x' % n)
In Python 3.2 und höher bietet der Bytetyp zusätzlichen Komfort:
bin(int.from_bytes('hello'.encode(), 'big'))
Für die Rückkonvertierung zu einer Zeichenfolge:
n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
Um alle Unicode-Zeichen in Python 3 zu unterstützen, kann die folgende Funktion verwendet werden:
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 & 1)))'
Für Python 2/3-Kompatibilität:
Mit diesen Funktionen wird die Konvertierung zwischen Binär- und Unicode-Strings sowohl in Python 2 als auch in Python 3 mühelos.
Das obige ist der detaillierte Inhalt vonWie kann ich in Python effizient zwischen Binär und ASCII (einschließlich Unicode) konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!