Байты Объекты¶
Эти функции поднимают TypeError, когда ожидают байтовый параметр и вызываются с небайтовым параметром.
-
PyTypeObject
PyBytes_Type¶ - Part of the Stable ABI.
Этот экземпляр
PyTypeObjectпредставляет тип байтов 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)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает новый объект bytes с копией строки v в качестве значения в случае успеха и
NULLв случае неудачи. Параметр v не должен бытьNULL; он не будет проверяться.
-
PyObject *
PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает новый объект bytes с копией строки v в качестве значения и длиной len в случае успеха, и
NULLв случае неудачи. Если v равноNULL, содержимое объекта bytes неинициализируется.
-
PyObject *
PyBytes_FromFormat(const char *format, ...)¶ - Return value: New reference. Part of the Stable ABI.
Принимает строку формат в стиле C
printf()- и переменное количество аргументов, вычисляет размер результирующего байтового объекта Python и возвращает байтовый объект с форматированными в него значениями. Переменные аргументы должны быть типа C и точно соответствовать символам формата в строке format. Допустимы следующие символы формата:Символы формата
Тип
Комментарий
%%n/a
Буквальный символ %.
%cint
Один байт, представленный в формате C int.
%dint
Эквивалентно
printf("%d"). 1%uunsigned int
Эквивалентно
printf("%u"). 1%ldдлинный
Эквивалентно
printf("%ld"). 1%luбеззнаковая длина
Эквивалентно
printf("%lu"). 1%zdЭквивалентно
printf("%zd"). 1%zuразмер_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)¶ - Return value: New reference. Part of the Stable ABI.
Идентичен
PyBytes_FromFormat()за исключением того, что принимает ровно два аргумента.
-
PyObject *
PyBytes_FromObject(PyObject *o)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает байтовое представление объекта o, реализующего буферный протокол.
-
Py_ssize_t
PyBytes_Size(PyObject *o)¶ - Part of the Stable ABI.
Возвращает длину байта в байтах объекта o.
-
Py_ssize_t
PyBytes_GET_SIZE(PyObject *o)¶ Макроформа
PyBytes_Size(), но без проверки ошибок.
-
char *
PyBytes_AsString(PyObject *o)¶ - Part of the Stable ABI.
Возвращает указатель на содержимое 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)¶ - Part of the Stable ABI.
Возвращает нуль-терминированное содержимое объекта obj через выходные переменные buffer и length.
Если length равно
NULL, объект bytes не может содержать встроенных нулевых байтов; если это так, функция возвращает-1и выдается предупреждениеValueError.Буфер относится к внутреннему буферу obj, который включает дополнительный нулевой байт в конце (не учитывается в length). Данные не должны быть изменены каким-либо образом, если только объект не был только что создан с помощью
PyBytes_FromStringAndSize(NULL, size). Он не должен быть деаллоцирован. Если obj вообще не является байтовым объектом,PyBytes_AsStringAndSize()возвращает-1и выдаетTypeError.Изменено в версии 3.5: Ранее, когда в объекте bytes встречались встроенные нулевые байты, возникала ошибка
TypeError.
-
void
PyBytes_Concat(PyObject **bytes, PyObject *newpart)¶ - Part of the Stable ABI.
Создать новый объект bytes в *bytes, содержащий содержимое newpart, добавленное к bytes; вызывающая сторона будет владеть новой ссылкой. Ссылка на старое значение bytes будет украдена. Если новый объект не может быть создан, старая ссылка на bytes все равно будет отброшена, а значение *bytes будет установлено в
NULL; будет установлено соответствующее исключение.
-
void
PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)¶ - Part of the Stable ABI.
Создать новый объект bytes в *bytes, содержащий содержимое newpart, добавленное к bytes. Эта версия уменьшает количество ссылок на newpart.
-
int
_PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)¶ Способ изменения размера объекта байтов, даже если он «неизменяем». Используйте эту функцию только для создания совершенно нового объекта байтов; не используйте ее, если байты могут быть уже известны в других частях кода. Ошибкой является вызов этой функции, если счетчик ссылок на входной объект bytes не равен единице. В качестве l-значения передается адрес существующего объекта bytes (он может быть записан в него) и желаемый новый размер. В случае успеха, *bytes содержит объект байтов измененного размера и возвращается
0; адрес в *bytes может отличаться от входного значения. Если перераспределение не удалось, исходный объект байтов в *bytes деаллоцируется, *bytes устанавливается вNULL,MemoryErrorустанавливается, и возвращается-1.