Spec-Zone.ru › Python 3.13

Объекты Bytes

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

type PyBytesObject

Этот подтип PyObject представляет собой объект Python типа bytes.

PyTypeObject PyBytes_Type
Часть Стабильной 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)
Значение возврата: новая ссылка. Часть Стабильной ABI.

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

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

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

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

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

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

Тип

Комментарий

%%

n/a

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

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

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

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

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

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

Py_ssize_t PyBytes_Size(PyObject *o)
Часть Стабильной ABI.

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

Py_ssize_t PyBytes_GET_SIZE(PyObject *o)

Аналогично PyBytes_Size(), но без проверки ошибок.

char *PyBytes_AsString(PyObject *o)
Часть Стабильной ABI.

Возвращает указатель на содержимое 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)
Часть Стабильного ABI.

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

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

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

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

void PyBytes_Concat(PyObject **bytes, PyObject *newpart)
Часть Стабильного ABI.

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

void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)
Часть Стабильного ABI.

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

int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)

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

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

Spec-Zone.ru

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