Объекты bytes
Эти функции вызывают TypeError, если ожидают параметр типа bytes, а вызваны с параметром другого типа.
-
type PyBytesObject -
Этот подтип
PyObjectпредставляет объект bytes в Python.
-
PyTypeObject PyBytes_Type -
Входит в стабильный ABI.
Этот экземпляр
PyTypeObjectпредставляет тип bytes в Python; на уровне Python это тот же объект, что иbytes.
-
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.
Принимает строку format в стиле C
printf()и переменное число аргументов, вычисляет размер результирующего объекта bytes в Python и возвращает объект bytes с отформатированными значениями. Переменные аргументы должны иметь типы C и точно соответствовать символам формата в строке format. Допускаются следующие символы формата:Символы формата
Тип
Комментарий
%%н/д
Символ % без преобразования.
%cint
Один байт, представленный как C int.
%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, реализующего протокол буфера.
-
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: Ранее, если в объекте bytes обнаруживались встроенные нулевые байты, вызывалось исключение
TypeError.
-
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, несмотря на его «неизменяемость». Используйте эту функцию только для создания нового объекта bytes; не используйте её, если объект 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.12/c-api/bytes.html