Объекты bytes¶Bytes Objects
Эти функции возбуждают TypeError, если ожидается параметр типа 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, ...)¶ Принимает строку формата в стиле C
printf(), строку format и переменное количество аргументов, вычисляет размер результирующего объекта bytes Python и возвращает объект bytes, в который отформатированы значения. Переменные аргументы должны быть типами C и точно соответствовать символам формата в строке format. Допускаются следующие символы формата:Символы формата Тип Описание %%н/д Буквальный символ %. %cint Один байт, представленный как C int. %dint Полностью эквивалентно printf("%d").%uunsigned int Полностью эквивалентно printf("%u").%ldlong Полностью эквивалентно printf("%ld").%luunsigned long Полностью эквивалентно printf("%lu").%zdPy_ssize_t Полностью эквивалентно printf("%zd").%zusize_t Полностью эквивалентно printf("%zu").%iint Полностью эквивалентно printf("%i").%xint Полностью эквивалентно printf("%x").%schar* Нуль-терминированный массив символов C. %pvoid* Шестнадцатеричное представление указателя 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)¶ Возвращает указатель на содержимое 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.Буфер ссылается на внутренний буфер obj, который содержит дополнительный нулевой байт в конце (не учитывается в length). Данные нельзя изменять никаким образом, за исключением случая, когда объект только что был создан с помощью
PyBytes_FromStringAndSize(NULL, size). Его нельзя освобождать. Если obj вообще не является байтовым объектом,PyBytes_AsStringAndSize()возвращает-1и возбуждаетTypeError.Изменено в версии 3.5: Ранее,
TypeErrorвозбуждалось, когда в байтовом объекте встречались встроенные нулевые байты.
-
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 как lvalue (в него может быть произведена запись) и желаемый новый размер. В случае успеха *bytes содержит изменённый объект bytes и возвращается
0; адрес в *bytes может отличаться от входного значения. Если перераспределение не удалось, исходный объект bytes по адресу *bytes освобождается, *bytes устанавливается в NULL, устанавливаетсяMemoryErrorи возвращается-1.