Bytes-Objekte¶
Diese Funktionen lösen TypeError aus, wenn ein Bytes-Parameter erwartet wird und ein Nicht-Bytes-Parameter übergeben wird.
-
PyTypeObject PyBytes_Type¶
- Teil der Stable ABI.
Diese Instanz von
PyTypeObjectrepräsentiert den Python-Bytes-Typ; sie ist dasselbe Objekt wiebytesauf Python-Ebene.
-
int PyBytes_Check(PyObject *o)¶
Gibt
truezurü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
truezurü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
NULLim Fehlerfall. Der Parameter v darf nichtNULLsein; 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
NULLim Fehlerfall. Wenn vNULList, 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.
%cint
Ein einzelnes Byte, dargestellt als ein C-Integer.
%dint
Äquivalent zu
printf("%d"). [1]%uunsigned int
Äquivalent zu
printf("%u"). [1]%ldlong
Äquivalent zu
printf("%ld"). [1]%luunsigned long
Äquivalent zu
printf("%lu"). [1]%zdÄquivalent zu
printf("%zd"). [1]%zusize_t
Äquivalent zu
printf("%zu"). [1]%iint
Äquivalent zu
printf("%i"). [1]%xint
Äquivalent zu
printf("%x"). [1]%sconst char*
Ein null-terminierter C-Zeichenarray.
%pconst void*
Die Hex-Darstellung eines C-Zeigers. Weitgehend äquivalent zu
printf("%p"), außer dass garantiert wird, dass es mit dem Literal0xbeginnt, unabhängig davon, was dieprintf-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) + 1Bytes 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 mitPyBytes_FromStringAndSize(NULL, size)erstellt. Es darf nicht freigegeben werden. Wenn o überhaupt kein Bytes-Objekt ist, gibtPyBytes_AsString()NULLzurück und löstTypeErroraus.
-
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
0zurück.Wenn length
NULList, darf das Bytes-Objekt keine eingebetteten Null-Bytes enthalten; wenn doch, gibt die Funktion-1zurück und löstValueErroraus.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, gibtPyBytes_AsStringAndSize()-1zurück und löstTypeErroraus.Geändert in Version 3.5: Zuvor löste
TypeErroraus, 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
NULLgesetzt; 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, dassPyUnicode_Join()einenNULL-Separator akzeptiert und ihn als Leerzeichen behandelt, währendPyBytes_Join()keinenNULL-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 undNULLzurü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
0wird 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 aufNULLgesetzt,MemoryErrorwird gesetzt und-1wird zurückgegeben.