Объекты типа 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
Литеральный символ %.
%cint
Один байт, представленный как целое число C.
%dint
Эквивалентно
printf("%d"). [1]%uunsigned int
Эквивалентно
printf("%u"). [1]%ldlong
Эквивалентно
printf("%ld"). [1]%luunsigned long
Эквивалентно
printf("%lu"). [1]%zdЭквивалентно
printf("%zd"). [1]%zusize_t
Эквивалентно
printf("%zu"). [1]%iint
Эквивалентно
printf("%i"). [1]%xint
Эквивалентно
printf("%x"). [1]%sconst char*
Нуль-терминированная строка C.
%pconst void*
Шестнадцатеричное представление указателя C. В основном эквивалентно
printf("%p")за исключением того, что оно гарантированно начинается с литерала0xнезависимо от того, что возвращает платформаprintf.Нераспознанный символ форматирования приводит к тому, что вся остальная часть строки форматирования копируется в результирующий объект как есть, а любые дополнительные аргументы игнорируются.
-
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, байтовый объект может не содержать вложенных нулевых байтов; если содержит, функция возвращает-1и возбуждаетсяValueError.Буфер ссылается на внутренний буфер obj, который включает дополнительный нулевой байт в конце (не учитывается в length). Данные не должны быть изменены каким-либо образом, если только объект не был только что создан с помощью
PyBytes_FromStringAndSize(NULL, size). Его нельзя удалять. Если obj вообще не является байтовым объектом,PyBytes_AsStringAndSize()возвращает-1и возбуждаетTypeError.Изменено в версии 3.5: Ранее,
TypeErrorвозбуждался, когда в байтовом объекте встречались вложенные нулевые байты.
-
void PyBytes_Concat(PyObject **bytes, PyObject *newpart) -
Часть Стабильной ABI.
Создает новый байтовый объект в *bytes, содержащий содержимое newpart, добавленное к bytes; вызывающий код владеет новой ссылкой. Ссылка на старое значение bytes будет украдена. Если новый объект не может быть создан, старая ссылка на bytes по-прежнему будет удалена, а значение *bytes будет установлено в
NULL; будет установлено соответствующее исключение.
-
void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart) -
Часть Стабильной ABI.
Создает новый байтовый объект в *bytes, содержащий содержимое newpart, добавленное к bytes. Эта версия освобождает сильную ссылку на newpart (т.е. уменьшает его счётчик ссылок).
-
int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize) -
Способ изменения размера байтового объекта, хотя он и «неизменяемый». Используйте только для создания нового байтового объекта; не используйте, если байты могут быть известны в других частях кода. Ошибка возникает, если счётчик ссылок на входной байтовый объект не равен единице. Передайте адрес существующего байтового объекта как lvalue (он может быть изменён), и желаемый новый размер. При успехе *bytes содержит изменённый байтовый объект, и возвращается
0; адрес в *bytes может отличаться от входного значения. Если перераспределение не удаётся, исходный байтовый объект в *bytes удаляется, *bytes устанавливается вNULL, возбуждаетсяMemoryError, и возвращается-1.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/c-api/bytes.html