Объекты bytes¶Bytes Objects
Эти функции возбуждают TypeError, если ожидается параметр bytes, а
вызываются с параметром, не являющимся bytes.
-
PyTypeObject
PyBytes_Type¶ Этот экземпляр
PyTypeObjectпредставляет тип bytes в Python; это тот же объект, что и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
printf(), строку format и переменное количество аргументов, вычисляет размер результирующего объекта 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)¶ - Возвращаемое значение: новая ссылка.
Идентично
PyBytes_FromFormat(), за исключением того, что принимает ровно два аргумента.
-
PyObject*
PyBytes_FromObject(PyObject *o)¶ - Возвращаемое значение: новая ссылка.
Возвращает байтовое представление объекта o, реализующего протокол буфера.
-
Py_ssize_t
PyBytes_Size(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 вообще не является байтовым объектом,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, байтовый объект не может содержать встроенные нулевые байты; если содержит, функция возвращает-1и возбуждаетсяValueError.Буфер ссылается на внутренний буфер obj, который содержит дополнительный нулевой байт в конце (не учитывается в length). Данные нельзя изменять никаким образом, за исключением случая, когда объект только что был создан с помощью
PyBytes_FromStringAndSize(NULL, size). Его нельзя освобождать. Если obj вообще не является байтовым объектом,PyBytes_AsStringAndSize()возвращает-1и возбуждаетTypeError.Изменено в версии 3.5: Ранее,
TypeErrorвозбуждалось, когда в байтовом объекте встречались встроенные нулевые байты.
-
void
PyBytes_Concat(PyObject **bytes, PyObject *newpart)¶ Создаёт новый байтовый объект в *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 уже может быть известен в других частях кода. Вызов этой функции является ошибкой, если счётчик ссылок на входной байтовый объект не равен единице. Передайте адрес существующего байтового объекта как lvalue (в него может производиться запись) и желаемый новый размер. В случае успеха *bytes содержит изменённый байтовый объект и возвращается
0; адрес в *bytes может отличаться от исходного. Если перераспределение не удалось, исходный байтовый объект по адресу *bytes освобождается, *bytes устанавливается вNULL, устанавливаетсяMemoryErrorи возвращается-1.