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
Freigeben: 2024-12-05 15:10:11
Original
930 Leute haben es durchsucht

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'
Nach dem Login kopieren

Um das umzukehren Prozess:

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

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()
Nach dem Login kopieren

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)))
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage