Объекты байтов
Эти функции поднимают 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-стиля 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.Неизвестный символ форматирования приводит к тому, что вся остальная часть строки форматирования копируется в результирующий объект без изменений, а любые дополнительные аргументы отбрасываются.
-
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.9/c-api/bytes.html