Das b
Präfix kennzeichnet ein bytes
Zeichenfolgenliteral .
Wenn Sie sehen, dass es im Python 3-Quellcode verwendet wird, erstellt der Ausdruck ein bytes
Objekt , kein reguläres Unicode- str
Objekt . Wenn Sie sehen, dass es in Ihrer Python-Shell oder als Teil einer Liste, eines Diktats oder eines anderen Containerinhalts wiedergegeben wird, sehen Sie ein bytes
Objekt, das mit dieser Notation dargestellt wird.
bytes
Objekte enthalten grundsätzlich eine Folge von Ganzzahlen im Bereich von 0 bis 255, aber wenn sie dargestellt werden, zeigt Python diese Bytes als ASCII-Codepunkte an, um das Lesen ihres Inhalts zu erleichtern. Jegliche Bytes außerhalb des druckbaren Bereichs von ASCII - Zeichen sind als Escape - Sequenzen gezeigt (zB \n
, \x82
usw.). Umgekehrt können Sie sowohl ASCII-Zeichen als auch Escape-Sequenzen verwenden, um Bytewerte zu definieren. für ASCII-Werte wird deren numerischer Wert verwendet (zB b'A'
== b'\x41'
)
Da ein bytes
Objekt aus einer Folge von Ganzzahlen besteht, können Sie ein bytes
Objekt aus einer beliebigen anderen Folge von Ganzzahlen mit Werten im Bereich von 0 bis 255 erstellen, z. B. eine Liste:
bytes([72, 101, 108, 108, 111])
und Indizierung gibt Ihnen die ganzen Zahlen zurück (aber Slicing erzeugt einen neuen bytes
Wert, für das obige Beispiel, value[0]
gibt Ihnen 72
aber value[:1]
ist b'H'
als 72 der ASCII - Code Punkt für den Großbuchstaben ist H ).
bytes
modellieren Binärdaten , einschließlich codierter Text . Wenn Ihr bytes
Wert Text enthält, müssen Sie ihn zuerst mit dem richtigen Codec dekodieren. Wenn die Daten beispielsweise als UTF-8 codiert sind, können Sie einen Unicode- str
Wert erhalten mit:
strvalue = bytesvalue.decode('utf-8')
Um umgekehrt von Text in einem str
Objekt zu einem zu bytes
wechseln, müssen Sie codieren . Sie müssen sich für eine zu verwendende Codierung entscheiden. Standardmäßig wird UTF-8 verwendet. Was Sie jedoch benötigen, hängt stark von Ihrem Anwendungsfall ab:
bytesvalue = strvalue.encode('utf-8')
Sie können auch den Konstruktor verwenden, bytes(strvalue, encoding)
um dasselbe zu tun.
Sowohl die Dekodierungs- als auch die Kodierungsmethode benötigen ein zusätzliches Argument, um anzugeben, wie Fehler behandelt werden sollen .
Python 2, Versionen 2.6 und 2.7, unterstützt auch das Erstellen von String-Literalen mithilfe der b'..'
String-Literal-Syntax, um Code zu vereinfachen, der sowohl in Python 2 als auch in Python 3 funktioniert.
bytes
Objekte sind unveränderlich, genau wie str
Strings. Verwenden Sie ein bytearray()
Objekt, wenn Sie einen veränderlichen Bytewert benötigen.