binascii — Konvertierung zwischen Binär- und ASCII-Daten¶
Das Modul binascii enthält eine Reihe von Methoden zur Konvertierung zwischen Binärdaten und verschiedenen ASCII-kodierten Binärdarstellungen. Normalerweise werden diese Funktionen nicht direkt verwendet, sondern stattdessen Wrapper-Module wie base64. Das Modul binascii enthält C-geschriebene Low-Level-Funktionen für höhere Geschwindigkeit, die von den übergeordneten Modulen verwendet werden.
Hinweis
a2b_*-Funktionen akzeptieren Unicode-Strings, die nur ASCII-Zeichen enthalten. Andere Funktionen akzeptieren nur bytes-ähnliche Objekte (wie bytes, bytearray und andere Objekte, die das Pufferprotokoll unterstützen).
Geändert in Version 3.3: ASCII-only Unicode-Strings werden jetzt von den a2b_*-Funktionen akzeptiert.
Das Modul binascii definiert die folgenden Funktionen
- binascii.a2b_uu(string)¶
Konvertiert eine einzelne Zeile uu-kodierter Daten zurück in Binärdaten und gibt die Binärdaten zurück. Zeilen enthalten normalerweise 45 (Binär-) Bytes, außer der letzten Zeile. Zeilendaten können von Leerzeichen gefolgt werden.
- binascii.b2a_uu(data, *, backtick=False)¶
Konvertiert Binärdaten in eine Zeile von ASCII-Zeichen; der Rückgabewert ist die konvertierte Zeile, einschließlich eines Zeilenumbruchs. Die Länge von data sollte höchstens 45 betragen. Wenn backtick wahr ist, werden Nullen durch
'`'statt durch Leerzeichen dargestellt.Geändert in Version 3.7: Der Parameter backtick wurde hinzugefügt.
- binascii.a2b_base64(string, /, *, strict_mode=False)¶
Konvertiert einen Block von Base64-Daten zurück in Binärdaten und gibt die Binärdaten zurück. Mehrere Zeilen können gleichzeitig übergeben werden.
Wenn strict_mode wahr ist, werden nur gültige Base64-Daten konvertiert. Ungültige Base64-Daten lösen eine
binascii.Erroraus.Gültiges Base64
Entspricht RFC 3548.
Enthält nur Zeichen aus dem Base64-Alphabet.
Enthält keine überflüssigen Daten nach dem Padding (einschließlich überflüssigem Padding, Zeilenumbrüchen usw.).
Beginnt nicht mit einem Padding.
Geändert in Version 3.11: Der Parameter strict_mode wurde hinzugefügt.
- binascii.b2a_base64(data, *, newline=True)¶
Konvertiert Binärdaten in eine Zeile von ASCII-Zeichen in Base64-Kodierung. Der Rückgabewert ist die konvertierte Zeile, einschließlich eines Zeilenumbruchs, wenn newline wahr ist. Die Ausgabe dieser Funktion entspricht RFC 3548.
Geändert in Version 3.6: Der Parameter newline wurde hinzugefügt.
- binascii.a2b_qp(data, header=False)¶
Konvertiert einen Block von quoted-printable-Daten zurück in Binärdaten und gibt die Binärdaten zurück. Mehrere Zeilen können gleichzeitig übergeben werden. Wenn das optionale Argument header vorhanden und wahr ist, werden Unterstriche als Leerzeichen dekodiert.
- binascii.b2a_qp(data, quotetabs=False, istext=True, header=False)¶
Konvertiert Binärdaten in eine oder mehrere Zeilen von ASCII-Zeichen in quoted-printable-Kodierung. Der Rückgabewert sind die konvertierten Zeilen. Wenn das optionale Argument quotetabs vorhanden und wahr ist, werden alle Tabs und Leerzeichen kodiert. Wenn das optionale Argument istext vorhanden und wahr ist, werden Zeilenumbrüche nicht kodiert, aber nachfolgende Leerzeichen werden kodiert. Wenn das optionale Argument header vorhanden und wahr ist, werden Leerzeichen gemäß RFC 1522 als Unterstriche kodiert. Wenn das optionale Argument header vorhanden und falsch ist, werden auch Zeilenumbruchzeichen kodiert; andernfalls kann die Zeilenumbruchkonvertierung den Binärdatenstrom beschädigen.
- binascii.crc_hqx(data, value)¶
Berechnet einen 16-Bit-CRC-Wert für data, beginnend mit value als initialem CRC, und gibt das Ergebnis zurück. Dies verwendet das CRC-CCITT-Polynom x16 + x12 + x5 + 1, oft als 0x1021 dargestellt. Dieser CRC wird im binhex4-Format verwendet.
- binascii.crc32(data[, value])¶
Berechnet CRC-32, die vorzeichenlose 32-Bit-Prüfsumme von data, beginnend mit einem initialen CRC von value. Der Standard-Initial-CRC ist Null. Der Algorithmus ist konsistent mit der ZIP-Datei-Prüfsumme. Da der Algorithmus für die Verwendung als Prüfsummenalgorithmus konzipiert ist, ist er nicht für die Verwendung als allgemeiner Hash-Algorithmus geeignet. Verwendung wie folgt:
print(binascii.crc32(b"hello world")) # Or, in two pieces: crc = binascii.crc32(b"hello") crc = binascii.crc32(b" world", crc) print('crc32 = {:#010x}'.format(crc))
Geändert in Version 3.0: Das Ergebnis ist immer vorzeichenlos.
- binascii.b2a_hex(data[, sep[, bytes_per_sep=1]])¶
- binascii.hexlify(data[, sep[, bytes_per_sep=1]])¶
Gibt die hexadezimale Darstellung der Binärdaten data zurück. Jedes Byte von data wird in die entsprechende 2-stellige hexadezimale Darstellung umgewandelt. Das zurückgegebene Bytes-Objekt ist daher doppelt so lang wie die Länge von data.
Ähnliche Funktionalität (aber Rückgabe eines Textstrings) ist auch bequem über die Methode
bytes.hex()zugänglich.Wenn sep angegeben ist, muss es ein einzelnes Zeichen als str oder bytes-Objekt sein. Es wird nach jeweils bytes_per_sep Eingabebytes in die Ausgabe eingefügt. Die Platzierung des Trennzeichens wird standardmäßig vom Ende der Ausgabe aus gezählt. Wenn Sie vom Anfang aus zählen möchten, geben Sie einen negativen Wert für bytes_per_sep an.
>>> import binascii >>> binascii.b2a_hex(b'\xb9\x01\xef') b'b901ef' >>> binascii.hexlify(b'\xb9\x01\xef', '-') b'b9-01-ef' >>> binascii.b2a_hex(b'\xb9\x01\xef', b'_', 2) b'b9_01ef' >>> binascii.b2a_hex(b'\xb9\x01\xef', b' ', -2) b'b901 ef'
Geändert in Version 3.8: Die Parameter sep und bytes_per_sep wurden hinzugefügt.
- binascii.a2b_hex(hexstr)¶
- binascii.unhexlify(hexstr)¶
Gibt die durch die hexadezimale Zeichenkette hexstr dargestellten Binärdaten zurück. Diese Funktion ist die Umkehrung von
b2a_hex(). hexstr muss eine gerade Anzahl von hexadezimalen Ziffern enthalten (die groß- oder kleingeschrieben sein können), andernfalls wird eineError-Ausnahme ausgelöst.Ähnliche Funktionalität (die nur Text-String-Argumente akzeptiert, aber liberaler gegenüber Leerzeichen ist) ist auch über die Klassenmethode
bytes.fromhex()zugänglich.
- exception binascii.Error¶
Ausnahme, die bei Fehlern ausgelöst wird. Dies sind normalerweise Programmierfehler.
- exception binascii.Incomplete¶
Ausnahme, die bei unvollständigen Daten ausgelöst wird. Dies sind normalerweise keine Programmierfehler, können aber durch das Lesen von etwas mehr Daten und erneuten Versuch behandelt werden.