Bytes-Objekte

Diese Funktionen lösen TypeError aus, wenn ein Bytes-Parameter erwartet wird und ein Nicht-Bytes-Parameter übergeben wird.

type PyBytesObject

Dieser Untertyp von PyObject repräsentiert ein Python-Bytes-Objekt.

PyTypeObject PyBytes_Type
Teil der Stable ABI.

Diese Instanz von PyTypeObject repräsentiert den Python-Bytes-Typ; sie ist dasselbe Objekt wie bytes auf Python-Ebene.

int PyBytes_Check(PyObject *o)

Gibt true zurück, wenn das Objekt o ein Bytes-Objekt oder eine Instanz eines Untertyps des Bytes-Typs ist. Diese Funktion ist immer erfolgreich.

int PyBytes_CheckExact(PyObject *o)

Gibt true zurück, wenn das Objekt o ein Bytes-Objekt ist, aber keine Instanz eines Untertyps des Bytes-Typs. Diese Funktion ist immer erfolgreich.

PyObject *PyBytes_FromString(const char *v)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Gibt ein neues Bytes-Objekt mit einer Kopie des Strings v als Wert zurück; im Erfolgsfall, und NULL im Fehlerfall. Der Parameter v darf nicht NULL sein; dies wird nicht überprüft.

PyObject *PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Gibt ein neues Bytes-Objekt mit einer Kopie des Strings v als Wert und der Länge len zurück; im Erfolgsfall, und NULL im Fehlerfall. Wenn v NULL ist, sind die Inhalte des Bytes-Objekts nicht initialisiert.

PyObject *PyBytes_FromFormat(const char *format, ...)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Nimmt eine C printf()-ähnliche format-Zeichenkette und eine variable Anzahl von Argumenten, berechnet die Größe des resultierenden Python-Bytes-Objekts und gibt ein Bytes-Objekt mit den formatierten Werten zurück. Die variablen Argumente müssen C-Typen sein und exakt den Formatzeichen in der format-Zeichenkette entsprechen. Die folgenden Formatzeichen sind erlaubt:

Formatierungszeichen

Typ

Kommentar

%%

n/a

Das Literal %-Zeichen.

%c

int

Ein einzelnes Byte, dargestellt als ein C-Integer.

%d

int

Äquivalent zu printf("%d"). [1]

%u

unsigned int

Äquivalent zu printf("%u"). [1]

%ld

long

Äquivalent zu printf("%ld"). [1]

%lu

unsigned long

Äquivalent zu printf("%lu"). [1]

%zd

Py_ssize_t

Äquivalent zu printf("%zd"). [1]

%zu

size_t

Äquivalent zu printf("%zu"). [1]

%i

int

Äquivalent zu printf("%i"). [1]

%x

int

Äquivalent zu printf("%x"). [1]

%s

const char*

Ein null-terminierter C-Zeichenarray.

%p

const void*

Die Hex-Darstellung eines C-Zeigers. Weitgehend äquivalent zu printf("%p"), außer dass garantiert wird, dass es mit dem Literal 0x beginnt, unabhängig davon, was die printf-Funktion der Plattform liefert.

Ein nicht erkannter Formatzeichen verursacht, dass der Rest der Formatzeichenkette unverändert in das Ergebnisobjekt kopiert wird und alle zusätzlichen Argumente verworfen werden.

PyObject *PyBytes_FromFormatV(const char *format, va_list vargs)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Identisch mit PyBytes_FromFormat(), außer dass es genau zwei Argumente erwartet.

PyObject *PyBytes_FromObject(PyObject *o)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Gibt die Bytes-Repräsentation des Objekts o zurück, das das Pufferprotokoll implementiert.

Py_ssize_t PyBytes_Size(PyObject *o)
Teil der Stable ABI.

Gibt die Länge der Bytes im Bytes-Objekt o zurück.

Py_ssize_t PyBytes_GET_SIZE(PyObject *o)

Ähnlich wie PyBytes_Size(), jedoch ohne Fehlerprüfung.

char *PyBytes_AsString(PyObject *o)
Teil der Stable ABI.

Gibt einen Zeiger auf den Inhalt von o zurück. Der Zeiger verweist auf den internen Puffer von o, der aus len(o) + 1 Bytes besteht. Das letzte Byte im Puffer ist immer null, unabhängig davon, ob andere Null-Bytes vorhanden sind. Die Daten dürfen in keiner Weise modifiziert werden, es sei denn, das Objekt wurde gerade mit PyBytes_FromStringAndSize(NULL, size) erstellt. Es darf nicht freigegeben werden. Wenn o überhaupt kein Bytes-Objekt ist, gibt PyBytes_AsString() NULL zurück und löst TypeError aus.

char *PyBytes_AS_STRING(PyObject *string)

Ähnlich wie PyBytes_AsString(), aber ohne Fehlerprüfung.

int PyBytes_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)
Teil der Stable ABI.

Gibt den null-terminierten Inhalt des Objekts obj über die Ausgabevariablen buffer und length zurück. Gibt im Erfolgsfall 0 zurück.

Wenn length NULL ist, darf das Bytes-Objekt keine eingebetteten Null-Bytes enthalten; wenn doch, gibt die Funktion -1 zurück und löst ValueError aus.

Der Puffer verweist auf einen internen Puffer von obj, der ein zusätzliches Null-Byte am Ende enthält (nicht in length gezählt). Die Daten dürfen in keiner Weise modifiziert werden, es sei denn, das Objekt wurde gerade mit PyBytes_FromStringAndSize(NULL, size) erstellt. Es darf nicht freigegeben werden. Wenn obj überhaupt kein Bytes-Objekt ist, gibt PyBytes_AsStringAndSize() -1 zurück und löst TypeError aus.

Geändert in Version 3.5: Zuvor löste TypeError aus, wenn eingebettete Null-Bytes im Bytes-Objekt gefunden wurden.

void PyBytes_Concat(PyObject **bytes, PyObject *newpart)
Teil der Stable ABI.

Erstellt ein neues Bytes-Objekt in *bytes, das den Inhalt von newpart angehängt an bytes enthält; der Aufrufer besitzt die neue Referenz. Die Referenz auf den alten Wert von bytes wird gestohlen. Wenn das neue Objekt nicht erstellt werden kann, wird die alte Referenz auf bytes trotzdem verworfen und der Wert von *bytes auf NULL gesetzt; die entsprechende Ausnahme wird gesetzt.

void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)
Teil der Stable ABI.

Erstellt ein neues Bytes-Objekt in *bytes, das den Inhalt von newpart angehängt an bytes enthält. Diese Version gibt die starke Referenz auf newpart frei (d. h. dekrementiert ihre Referenzanzahl).

PyObject *PyBytes_Join(PyObject *sep, PyObject *iterable)

Ähnlich wie sep.join(iterable) in Python.

sep muss ein Python- bytes-Objekt sein. (Beachten Sie, dass PyUnicode_Join() einen NULL-Separator akzeptiert und ihn als Leerzeichen behandelt, während PyBytes_Join() keinen NULL-Separator akzeptiert.)

iterable muss ein iterierbares Objekt sein, das Objekte liefert, welche das Pufferprotokoll implementieren.

Im Erfolgsfall wird ein neues bytes-Objekt zurückgegeben. Im Fehlerfall wird eine Ausnahme gesetzt und NULL zurückgegeben.

Hinzugefügt in Version 3.14.

int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)

Größenänderung eines Bytes-Objekts. newsize ist die neue Länge des Bytes-Objekts. Sie können dies als Erstellung eines neuen Bytes-Objekts und Zerstörung des alten betrachten, nur effizienter. Übergeben Sie die Adresse eines vorhandenen Bytes-Objekts als Lvalue (es kann beschrieben werden), und die neue gewünschte Größe. Im Erfolgsfall enthält *bytes das größenveränderte Bytes-Objekt und 0 wird zurückgegeben; die Adresse in *bytes kann von ihrem Eingabewert abweichen. Wenn die Neuzuweisung fehlschlägt, wird das ursprüngliche Bytes-Objekt unter *bytes freigegeben, *bytes wird auf NULL gesetzt, MemoryError wird gesetzt und -1 wird zurückgegeben.