Байты Объекты¶
Эти функции поднимают 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
Буквальный символ %.
%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
размер_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
.Нераспознанный символ формата приводит к тому, что вся остальная часть строки формата копируется в объект результата как есть, а все дополнительные аргументы отбрасываются.
-
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
.