Объекты bytes¶Bytes Objects
Эти функции возбуждают TypeError, когда ожидают параметр bytes, а вызываются с параметром, не являющимся bytes.
- PyTypeObject PyBytes_Type¶
- Этот экземпляр PyTypeObject представляет тип bytes Python; он является тем же объектом, что и bytes на уровне Python.
- int PyBytes_Check(PyObject *o)¶
- Возвращает истину, если объект o является объектом bytes или экземпляром подтипа типа bytes.
- int PyBytes_CheckExact(PyObject *o)¶
- Возвращает истину, если объект 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, ...)¶
Принимает строку format в стиле C printf() и переменное число аргументов, вычисляет размер результирующего объекта bytes Python и возвращает объект bytes с отформатированными в него значениями. Переменные аргументы должны быть типами C и должны точно соответствовать символам формата в строке format. Допускаются следующие символы формата:
Символы формата Тип Описание %% н/д Буквальный символ %. %c int Одиночный символ, представленный как C int. %d int Полностью эквивалентно printf("%d"). %u беззнаковый int Полностью эквивалентно printf("%u"). %ld long Полностью эквивалентно printf("%ld"). %lu беззнаковый long Полностью эквивалентно printf("%lu"). %zd Py_ssize_t Полностью эквивалентно printf("%zd"). %zu size_t Полностью эквивалентно printf("%zu"). %i int Полностью эквивалентно printf("%i"). %x int Полностью эквивалентно printf("%x"). %s char* Нуль-терминированный массив символов C. %p void* Шестнадцатеричное представление указателя C. В основном эквивалентно printf("%p") за исключением того, что гарантированно начинается с литерала 0x независимо от того, что выдает printf на данной платформе. Нераспознанный символ формата приводит к тому, что вся оставшаяся строка формата копируется как есть в результирующую строку, а все лишние аргументы отбрасываются.
- PyObject* PyBytes_FromFormatV(const char *format, va_list vargs)¶
- Идентична PyBytes_FromFormat() за исключением того, что принимает ровно два аргумента.
- PyObject* PyBytes_FromObject(PyObject *o)¶
- Возвращает байтовое представление объекта o, реализующего протокол буфера.
- Py_ssize_t PyBytes_GET_SIZE(PyObject *o)¶
- Макрос, аналогичный PyBytes_Size(), но без проверки ошибок.
- char* PyBytes_AsString(PyObject *o)¶
- Возвращает NUL-терминированное представление содержимого o. Указатель ссылается на внутренний буфер o, а не на копию. Данные нельзя изменять никаким образом, если только строка не была только что создана с помощью PyBytes_FromStringAndSize(NULL, size). Её нельзя освобождать. Если o вообще не является строковым объектом, PyBytes_AsString() возвращает NULL и возбуждает TypeError.
- char* PyBytes_AS_STRING(PyObject *string)¶
- Макрос, аналогичный PyBytes_AsString(), но без проверки ошибок.
- int PyBytes_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)¶
Возвращает представление содержимого объекта obj, завершающееся NUL, через выходные переменные buffer и length.
Если length равен NULL, результирующий буфер может не содержать NUL-символы; если же содержит, функция возвращает -1 и возбуждается TypeError.
Буфер ссылается на внутренний строковый буфер объекта obj, а не на копию. Данные нельзя изменять никоим образом, если только строка не была только что создана с помощью PyBytes_FromStringAndSize(NULL, size). Его нельзя освобождать. Если string вообще не является строковым объектом, PyBytes_AsStringAndSize() возвращает -1 и возбуждает TypeError.
- void PyBytes_Concat(PyObject **bytes, PyObject *newpart)¶
- Создаёт новый объект bytes в *bytes, содержащий содержимое newpart, добавленное к bytes; вызывающий получает владение новой ссылкой. Ссылка на старое значение bytes будет украдена. Если новую строку не удалось создать, старая ссылка на bytes всё равно будет отброшена, а значение *bytes будет установлено в NULL; будет установлено соответствующее исключение.
- void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)¶
- Создаёт новый строковый объект в *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, устанавливается исключение памяти, и возвращается -1.