Bytes-objekt¶
Dessa funktioner ger upphov till TypeError
när de förväntar sig en bytesparameter och anropas med en parameter som inte är bytes.
-
PyTypeObject PyBytes_Type¶
- En del av Stabil ABI.
Denna instans av
PyTypeObject
representerar Python-bytes-typen; det är samma objekt sombytes
i Python-lagret.
-
int PyBytes_Check(PyObject *o)¶
Returnerar true om objektet o är ett bytesobjekt eller en instans av en subtyp av bytes-typen. Denna funktion lyckas alltid.
-
int PyBytes_CheckExact(PyObject *o)¶
Returnerar true om objektet o är ett bytesobjekt, men inte en instans av en subtyp av bytes-typen. Denna funktion lyckas alltid.
-
PyObject *PyBytes_FromString(const char *v)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Returnerar ett nytt bytesobjekt med en kopia av strängen v som värde vid framgång, och
NULL
vid misslyckande. Parametern v får inte varaNULL
; den kommer inte att kontrolleras.
-
PyObject *PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Returnerar ett nytt bytes-objekt med en kopia av strängen v som värde och längden len vid framgång, och
NULL
vid misslyckande. Om v ärNULL
avinitialiseras innehållet i bytes-objektet.
-
PyObject *PyBytes_FromFormat(const char *format, ...)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Ta en C
printf()
-stil format-sträng och ett variabelt antal argument, beräkna storleken på det resulterande Python bytes-objektet och returnera ett bytes-objekt med de värden som formaterats i det. De variabla argumenten måste vara C-typer och måste exakt motsvara formattecknen i format-strängen. Följande formattecken är tillåtna:Format tecken
Typ
Kommentar
%%
n/a
Det bokstavliga % ctecknet.
%c
int
En enda byte, representerad som en C int.
%d
int
Motsvarar
printf("%d")
. [1]%u
osignerad int
Motsvarar
printf("%u")
. [1]%ld
long
Motsvarar
printf("%ld")
. [1]%lu
unsigned long
Motsvarar
printf("%lu")
. [1]%zd
Motsvarar
printf("%zd")
. [1]%zu
storlek_t
Motsvarar
printf("%zu")
. [1]%i
int
Motsvarar
printf("%i")
. [1]%x
int
Motsvarar
printf("%x")
. [1]%s
konst char*
En nollavslutad C-teckenmatris.
%p
konst void*
Hex-representationen av en C-pekare. I stort sett likvärdig med
printf("%p")
förutom att den garanterat börjar med den bokstavliga0x
oavsett vad plattformensprintf
ger.Ett formattecken som inte känns igen gör att resten av formatsträngen kopieras som den är till resultatobjektet och att eventuella extra argument kasseras.
-
PyObject *PyBytes_FromFormatV(const char *format, va_list vargs)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Identisk med
PyBytes_FromFormat()
förutom att den tar exakt två argument.
-
PyObject *PyBytes_FromObject(PyObject *o)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Returnera bytesrepresentationen av objektet o som implementerar buffertprotokollet.
-
Py_ssize_t PyBytes_Size(PyObject *o)¶
- En del av Stabil ABI.
Returnera längden på byte i bytesobjektet o.
-
Py_ssize_t PyBytes_GET_SIZE(PyObject *o)¶
Liknar
PyBytes_Size()
, men utan felkontroll.
-
char *PyBytes_AsString(PyObject *o)¶
- En del av Stabil ABI.
Returnerar en pekare till innehållet i o. Pekaren refererar till den interna bufferten i o, som består av
len(o) + 1
byte. Den sista byten i bufferten är alltid null, oavsett om det finns några andra null-bytes. Data får inte ändras på något sätt, såvida inte objektet just skapades medPyBytes_FromStringAndSize(NULL, size)
. Det får inte deallokeras. Om o inte alls är ett bytesobjekt, returnerarPyBytes_AsString()
NULL
och ger upphov tillTypeError
.
-
char *PyBytes_AS_STRING(PyObject *string)¶
Liknar
PyBytes_AsString()
, men utan felkontroll.
-
int PyBytes_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)¶
- En del av Stabil ABI.
Returnerar det nollavslutade innehållet i objektet obj genom utdatavariablerna buffer och length. Returnerar
0
vid framgång.Om length är
NULL
får bytesobjektet inte innehålla inbäddade nullbytes; om det gör det returnerar funktionen-1
och ettValueError`
uppstår.Bufferten hänvisar till en intern buffert i obj, som innehåller en extra null-byte i slutet (räknas inte in i length). Data får inte ändras på något sätt, såvida inte objektet precis skapades med
PyBytes_FromStringAndSize(NULL, size)
. Det får inte deallokeras. Om obj inte alls är ett bytesobjekt, returnerarPyBytes_AsStringAndSize()
-1
och ger upphov tillTypeError
.Ändrad i version 3.5: Tidigare skapades
TypeError
när inbäddade null-bytes påträffades i bytes-objektet.
-
void PyBytes_Concat(PyObject **bytes, PyObject *newpart)¶
- En del av Stabil ABI.
Skapa ett nytt bytesobjekt i *bytes som innehåller innehållet i newpart som lagts till bytes; den som anropar kommer att äga den nya referensen. Referensen till det gamla värdet av bytes kommer att stjälas. Om det nya objektet inte kan skapas, kommer den gamla referensen till bytes ändå att kasseras och värdet på *bytes kommer att sättas till
NULL
; lämpligt undantag kommer att sättas.
-
void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)¶
- En del av Stabil ABI.
Skapa ett nytt bytesobjekt i *bytes som innehåller innehållet i newpart tillagt bytes. Denna version släpper strong reference till newpart (dvs. minskar dess referensantal).
-
PyObject *PyBytes_Join(PyObject *sep, PyObject *iterable)¶
Liknar
sep.join(iterable)
i Python.sep måste vara ett Python
bytes
-objekt. (Observera attPyUnicode_Join()
accepterarNULL
separator och behandlar det som ett mellanslag, medanPyBytes_Join()
inte accepterarNULL
separator)iterable måste vara ett iterabelt objekt som ger objekt som implementerar buffer protocol.
Vid framgång returneras ett nytt
bytes
-objekt. Vid fel, ange ett undantag och returneraNULL
.Tillagd i version 3.14.
-
int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)¶
Ändra storlek på ett bytes-objekt. newsize blir den nya längden på bytesobjektet. Du kan tänka på det som att skapa ett nytt bytes-objekt och förstöra det gamla, fast mer effektivt. Skicka adressen till ett befintligt bytes-objekt som ett l-värde (det kan skrivas in i det) och den nya önskade storleken. Vid framgång innehåller *bytes det storleksförändrade bytesobjektet och
0
returneras; adressen i *bytes kan skilja sig från dess ingångsvärde. Om omallokeringen misslyckas, avallokeras det ursprungliga bytesobjektet i *bytes, *bytes sätts tillNULL
,MemoryError
sätts och-1
returneras.