Об’єкти Bytes

Ці функції викликають TypeError, коли очікується параметр bytes і викликаються з параметром, який не є байтом.

type PyBytesObject

Цей підтип PyObject представляє об’єкт Python bytes.

PyTypeObject PyBytes_Type
Part of the Stable ABI.

Цей екземпляр PyTypeObject представляє тип Python bytes; це той самий об’єкт, що й bytes на рівні Python.

int PyBytes_Check(PyObject *o)

Повертає true, якщо об’єкт o є об’єктом bytes або екземпляром підтипу типу bytes. Ця функція завжди успішна.

int PyBytes_CheckExact(PyObject *o)

Повертає true, якщо об’єкт o є об’єктом bytes, але не екземпляром підтипу типу bytes. Ця функція завжди успішна.

PyObject *PyBytes_FromString(const char *v)
Return value: New reference. Part of the Stable ABI.

Повертає новий об’єкт bytes із копією рядка v як значення в разі успіху та NULL у разі помилки. Параметр v не має бути NULL; перевірятися не буде.

PyObject *PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)
Return value: New reference. Part of the Stable ABI.

Повертає новий об’єкт bytes із копією рядка v як значення та довжиною len у разі успіху та NULL у разі помилки. Якщо v має значення NULL, вміст об’єкта bytes не ініціалізується.

PyObject *PyBytes_FromFormat(const char *format, ...)
Return value: New reference. Part of the Stable ABI.

Візьміть рядок format у стилі C printf()і змінну кількість аргументів, обчисліть розмір результуючого об’єкта Python bytes і поверніть об’єкт bytes із відформатованими значеннями. Змінні аргументи мають бути типу C і точно відповідати символам формату в рядку format. Дозволяються такі символи формату:

Формат символів

Тип

коментар

%%

немає

Літеральний символ %.

%c

внутр

Один байт, представлений як C int.

%d

внутр

Еквівалент printf("%d"). [1]

%u

unsigned int

Еквівалент printf("%u"). [1]

%ld

довгота

Еквівалент printf("%ld"). [1]

%lu

беззнаковий довгий

Еквівалент printf("%lu"). [1]

%zd

Py_ssize_t

Еквівалент printf("%zd"). [1]

%zu

size_t

Еквівалент printf("%zu"). [1]

%i

внутр

Еквівалент printf("%i"). [1]

%x

внутр

Еквівалент printf("%x"). [1]

%s

const char*

Масив символів C із закінченням нулем.

%p

const void*

Шістнадцяткове представлення покажчика C. Здебільшого еквівалентний printf("%p") за винятком того, що він гарантовано починається з літералу 0x незалежно від того, що дає printf платформи.

Нерозпізнаний символ формату спричиняє копіювання всієї решти рядка формату в об’єкт результату як є, а будь-які додаткові аргументи відкидаються.

PyObject *PyBytes_FromFormatV(const char *format, va_list vargs)
Return value: New reference. Part of the Stable ABI.

Ідентичний PyBytes_FromFormat() за винятком того, що він приймає рівно два аргументи.

PyObject *PyBytes_FromObject(PyObject *o)
Return value: New reference. Part of the Stable ABI.

Повертає представлення байтів об’єкта o, який реалізує протокол буфера.

Py_ssize_t PyBytes_Size(PyObject *o)
Part of the Stable ABI.

Повертає довжину байтів у байтах об’єкт o.

Py_ssize_t PyBytes_GET_SIZE(PyObject *o)

Similar to PyBytes_Size(), but without error checking.

char *PyBytes_AsString(PyObject *o)
Part of the Stable ABI.

Повернути вказівник на вміст o. Покажчик посилається на внутрішній буфер o, який складається з len(o) + 1 байтів. Останній байт у буфері завжди нульовий, незалежно від того, чи є інші нульові байти. Дані не можна змінювати жодним чином, якщо об’єкт не було щойно створено за допомогою PyBytes_FromStringAndSize(NULL, size). Його не можна звільняти. Якщо o взагалі не є об’єктом bytes, PyBytes_AsString() повертає NULL і викликає TypeError.

char *PyBytes_AS_STRING(PyObject *string)

Similar to PyBytes_AsString(), but without error checking.

int PyBytes_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)
Part of the Stable ABI.

Return the null-terminated contents of the object obj through the output variables buffer and length. Returns 0 on success.

Якщо length дорівнює NULL, об’єкт bytes може не містити вбудованих нульових байтів; якщо це так, функція повертає -1 і викликає ValueError.

Буфер відноситься до внутрішнього буфера obj, який містить додатковий нульовий байт у кінці (не враховується в довжині). Дані не можна змінювати жодним чином, якщо об’єкт не було щойно створено за допомогою PyBytes_FromStringAndSize(NULL, size). Його не можна звільняти. Якщо obj взагалі не є об’єктом bytes, PyBytes_AsStringAndSize() повертає -1 і викликає TypeError.

Змінено в версії 3.5: Раніше TypeError виникало, коли в об’єкті bytes зустрічалися вбудовані нульові байти.

void PyBytes_Concat(PyObject **bytes, PyObject *newpart)
Part of the Stable ABI.

Створіть новий об’єкт bytes у *bytes, що містить вміст newpart, доданий до bytes; абонент буде володіти новим посиланням. Посилання на старе значення bytes буде викрадено. Якщо новий об’єкт неможливо створити, старе посилання на bytes все одно буде відкинуто, а значення *bytes буде встановлено на NULL; буде встановлено відповідний виняток.

void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)
Part of the Stable ABI.

Create a new bytes object in *bytes containing the contents of newpart appended to bytes. This version releases the strong reference to newpart (i.e. decrements its reference count).

int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)

Спосіб змінити розмір об’єкта bytes, навіть якщо він «незмінний». Використовуйте це лише для створення абсолютно нового об’єкта bytes; не використовуйте це, якщо байти можуть бути вже відомі в інших частинах коду. Виклик цієї функції буде помилковим, якщо refcount для об’єкта вхідних байтів не один. Передайте адресу існуючого об’єкта bytes як lvalue (його можна записати) і новий бажаний розмір. У разі успіху *bytes містить змінений об’єкт байтів і повертає 0; адреса в *байтах може відрізнятися від введеного значення. Якщо перерозподіл не вдається, вихідний об’єкт bytes у *bytes звільняється, *bytes встановлюється на NULL, встановлюється MemoryError і повертається -1 .