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.

type PyBytesObject

Denna subtyp av PyObject representerar ett Python bytes-objekt.

PyTypeObject PyBytes_Type
En del av Stabil ABI.

Denna instans av PyTypeObject representerar Python-bytes-typen; det är samma objekt som bytes 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 vara NULL; 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 är NULL 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

Py_ssize_t

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 bokstavliga 0x oavsett vad plattformens printf 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 med PyBytes_FromStringAndSize(NULL, size). Det får inte deallokeras. Om o inte alls är ett bytesobjekt, returnerar PyBytes_AsString() NULL och ger upphov till TypeError.

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 ett ValueError` 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, returnerar PyBytes_AsStringAndSize() -1 och ger upphov till TypeError.

Ä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 att PyUnicode_Join() accepterar NULL separator och behandlar det som ett mellanslag, medan PyBytes_Join() inte accepterar NULL 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 returnera NULL.

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 till NULL, MemoryError sätts och -1 returneras.