Bytes объекты

Эти функции поднимают TypeError при ожидании параметра bytes и вызываются с не байтовым параметром.

PyTypeObject PyBytes_Type

Сущность 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.

Возвращает новый байтовый объект с копией строки v в качестве значение при успешном выполнении и NULL при сбое. Параметр v не должен быть NULL; он не будет проверяться.

PyObject* PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)
Return value: New reference.

Возвращает новый bytes объект с копией строки v как значение и длина, len при успехе, и NULL при сбое. Если v NULL, содержимое объекта bytes не инициализируется.

PyObject* PyBytes_FromFormat(const char *format, ...)
Return value: New reference.

Принять C printf()-стиль format строку и переменное количество аргументов, вычисляет размер получающегося объекта байтов Python и возвращает bytes объект с значениями, отформатированным в него. Переменные аргументы должны иметь тип C и точно соответствовать символам формата в format строке. Допустимы следующие символы формата:

Форматные символы Тип Комментарий
%%   Литерал % символа.
%c int Один байт, представленный как C int.
%d int Эквивалентный printf("%d"). [1]
%u unsigned int Эквивалентный printf("%u"). [1]
%ld long Эквивалентный printf("%ld"). [1]
%lu unsigned long Эквивалентный printf("%lu"). [1]
%zd Py_ssize_t Эквивалентный printf("%zd"). [1]
%zu size_t Эквивалентный printf("%zu"). [1]
%i int Эквивалентный printf("%i"). [1]
%x int Эквивалентный printf("%x"). [1]
%s const char* Символьный массив C с нулевым окончанием.
%p const void* Hex представление указателя C. В основном эквивалентно printf("%p"), за исключением того, что оно гарантированно начинается с литерала 0x независимо от того, что дает printf платформа.

Нераспознанный символ формата приводит к тому, что вся остальная строка формата копируются как есть в результирующий объект, а любые дополнительные аргументы отбрасываются.

[1](1, 2, 3, 4, 5, 6, 7, 8) для целочисленных спецификаторов (d, u, ld, lu, zd, zu, i, x) флаг 0-преобразования действует даже при задании точности.
PyObject* PyBytes_FromFormatV(const char *format, va_list vargs)
Return value: New reference.

Идентичен PyBytes_FromFormat() за исключением того, что он занимает ровно два аргумента.

PyObject* PyBytes_FromObject(PyObject *o)
Return value: New reference.

Возвращает байтовое представление o объекта, реализующего протокол буфера.

Py_ssize_t PyBytes_Size(PyObject *o)

Возвращает длину байтов в байтах o объекта.

Py_ssize_t PyBytes_GET_SIZE(PyObject *o)

Макро-форма PyBytes_Size(), но без проверки ошибок.

char* PyBytes_AsString(PyObject *o)

Возвращает указатель на содержимое o. Указатель ссылается на внутренний буфер o, состоящий из len(o) + 1 байт. Последний байт в буфере всегда имеет null значение, независимо от наличия других нулевых байтов. Данные нельзя изменять, если только объект не был создан только с помощью PyBytes_FromStringAndSize(NULL, size). Он не должен быть освобожден. Если o не является объектом байтов, PyBytes_AsString() возвращает NULL и повышает TypeError.

char* PyBytes_AS_STRING(PyObject *string)

Макро-форма PyBytes_AsString(), но без проверки ошибок.

int PyBytes_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)

Возвращает содержимое объекта, obj через выходные переменные buffer и length.

Если length NULL, объект bytes не может содержать внедренные null байты; в этом случае функция возвращает -1 и ValueError.

Буфер относится к внутреннему буферу obj, который включает дополнительный null байт в конце (не подсчитывается в length). Данные нельзя изменять, если только объект не был создан только с помощью PyBytes_FromStringAndSize(NULL, size). Он не должен быть освобожден. Если obj не является объектом байтов, PyBytes_AsStringAndSize() возвращает -1 и поднимает TypeError.

Изменено в версии 3.5: Ранее TypeError поднималась при обнаружении встроенных пустых байт в объекте bytes.

void PyBytes_Concat(PyObject **bytes, PyObject *newpart)

Создать новый байтовый объект в *bytes, содержащий содержимое newpart, добавленное к bytes; вызывающему будет принадлежать новая ссылка. Ссылка на старое значение bytes будет украдена. Если новый объект не может быть создан, старая ссылка на bytes будет по- прежнему отброшена, а значение *bytes будет иметь значение NULL; будет установлено соответствующее исключение.

void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)

Создать новый байтовый объект в *bytes, содержащий содержимое newpart, добавленное к bytes. Эта версия уменьшает количество ссылок на newpart.

int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)

Способ изменения размера байтового объекта, даже если он является «неизменяемым». Используйте его только для создания совершенно нового байтового объекта; не используйте его, если байты уже известны в других частях кода. Ошибка при вызове этой функции, если количество refcount для объекта входных байтов не равно единице. Передайте адрес существующего байтового объекта в качестве значения lvalue (его можно записать) и требуемого нового размера. При успешном выполнении *bytes содержит объект с измененным размером байтов и возвращенный 0; адрес в *bytes может отличаться от его входного значения. Если перераспределение завершается неуспешно, исходный байтовый объект в *bytes освобождается, *bytes устанавливается в NULL, MemoryError устанавливается и возвращается -1.