Байты Объекты¶
Эти функции поднимают TypeError
, если ожидают байтовый параметр и вызываются с небайтовым параметром.
-
PyTypeObject PyBytes_Type¶
- Часть Стабильный ABI.
Этот экземпляр
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)¶
- Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.
Возвращает новый объект bytes с копией строки v в качестве значения в случае успеха и
NULL
в случае неудачи. Параметр v не должен бытьNULL
; он не будет проверяться.
-
PyObject *PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)¶
- Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.
Возвращает новый объект bytes с копией строки v в качестве значения и длиной len в случае успеха и
NULL
в случае неудачи. Если v равноNULL
, содержимое объекта bytes неинициализируется.
-
PyObject *PyBytes_FromFormat(const char *format, ...)¶
- Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.
Принимает строку формата в стиле C
printf()
- и переменное количество аргументов, вычисляет размер результирующего объекта байтов Python и возвращает объект байтов с отформатированными в него значениями. Переменные аргументы должны быть типа C и должны точно соответствовать символам формата в строке format. Допускаются следующие символы формата:Символы формата
Тип
Комментарий
%%
n/a
Буквальный символ %.
%c
int
Один байт, представленный как C int.
%d
int
Эквивалент
printf("%d")
. [1]%u
unsigned int
Эквивалент
printf("%u")
. [1]%ld
длинный
Эквивалент
printf("%ld")
. [1]%lu
беззнаковая длина
Эквивалент
printf("%lu")
. [1]%zd
Эквивалент
printf("%zd")
. [1]%zu
size_t
Эквивалент
printf("%zu")
. [1]%i
int
Эквивалент
printf("%i")
. [1]%x
int
Эквивалент
printf("%x")
. [1]%s
const char*
Нуль-терминированный символьный массив на языке C.
%p
const void*
Шестнадцатеричное представление указателя в языке C. В основном эквивалентен
printf("%p")
, за исключением того, что гарантированно начинается с литерала0x
, независимо от того, что даетprintf
платформы.Нераспознанный символ формата приводит к тому, что вся остальная часть строки формата копируется в объект result как есть, а все лишние аргументы отбрасываются.
-
PyObject *PyBytes_FromFormatV(const char *format, va_list vargs)¶
- Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.
Идентичен
PyBytes_FromFormat()
, за исключением того, что принимает ровно два аргумента.
-
PyObject *PyBytes_FromObject(PyObject *o)¶
- Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.
Возвращает байтовое представление объекта o, реализующего буферный протокол.
-
Py_ssize_t PyBytes_Size(PyObject *o)¶
- Часть Стабильный ABI.
Возвращает длину байта в байтах объекта o.
-
Py_ssize_t PyBytes_GET_SIZE(PyObject *o)¶
Аналогично
PyBytes_Size()
, но без проверки ошибок.
-
char *PyBytes_AsString(PyObject *o)¶
- Часть Стабильный ABI.
Возвращает указатель на содержимое 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)¶
- Часть Стабильный ABI.
Возвращает нуль-терминированное содержимое объекта obj через выходные переменные buffer и length. В случае успеха возвращает
0
.Если 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)¶
- Часть Стабильный ABI.
Создает новый объект bytes в *bytes, содержащий содержимое newpart, добавленное к bytes; вызывающая сторона будет владеть новой ссылкой. Ссылка на старое значение bytes будет украдена. Если новый объект не может быть создан, старая ссылка на bytes все равно будет отброшена, а значение *bytes будет установлено в
NULL
; будет установлено соответствующее исключение.
-
void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)¶
- Часть Стабильный ABI.
Создает новый объект bytes в *bytes, содержащий содержимое newpart, добавленное к bytes. Эта версия освобождает strong reference для newpart (т. е. уменьшает количество ссылок на него).
-
int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)¶
Изменение размера байтового объекта. newsize будет новой длиной байтового объекта. Это можно представить как создание нового байтового объекта и уничтожение старого, только более эффективно. Передайте адрес существующего объекта bytes в качестве lvalue (он может быть записан в него) и желаемый новый размер. В случае успеха *bytes содержит измененный размер объекта байтов и возвращается
0
; адрес в *bytes может отличаться от входного значения. Если перераспределение не удалось, исходный объект байтов по адресу *bytes деаллоцируется, *bytes устанавливается вNULL
,MemoryError
устанавливается, и возвращается-1
.