Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python effizient zwischen Binär und ASCII (einschließlich Unicode) konvertieren?

Wie kann ich in Python effizient zwischen Binär und ASCII (einschließlich Unicode) konvertieren?

Susan Sarandon
Susan SarandonOriginal
2024-11-26 05:35:11496Durchsuche

How Can I Efficiently Convert Between Binary and ASCII (Including Unicode) in Python?

Binär in ASCII konvertieren und umgekehrt

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.

Einfachere Konvertierungsmethoden

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)

Python 3.2-Verbesserungen

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

Unicode-Unterstützung in Python 3

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!

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