Spec-Zone.ru › Python 3.8

Объекты байтов

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

PyBytesObject

Этот подтип PyObject представляет объект Python типа 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)
Значение возврата: новая ссылка.

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

PyObject* PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)
Значение возврата: новая ссылка.

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

PyObject* PyBytes_FromFormat(const char *format, ...)
Значение возврата: новая ссылка.

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

Символы формата

Тип

Комментарий

%%

n/a

Буквальный символ %.

%c

int

Один байт, представленный как целое число C.

%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*

Шестнадцатеричное представление указателя 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)
Значение возврата: новая ссылка.

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

PyObject* PyBytes_FromObject(PyObject *o)
Значение возврата: новая ссылка.

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

Py_ssize_t PyBytes_Size(PyObject *o)

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

Py_ssize_t PyBytes_GET_SIZE(PyObject *o)

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

char* PyBytes_AsString(PyObject *o)

Возвращает указатель на содержимое o. Указатель ссылается на внутренний буфер o, который состоит из len(o) + 1 байтов. Последний байт в буфере всегда равен нулю, независимо от наличия других нулевых байтов. Данные не должны изменяться никоим образом, если объект только что был создан с использованием PyBytes_FromStringAndSize(NULL, size). Их нельзя удалять. Если o вообще не является объектом bytes, 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 может не содержать вставленных нулевых байтов; если содержит, функция возвращает -1 и генерирует исключение ValueError.

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

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

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

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

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

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

int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)

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

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/c-api/bytes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API