Bytes объекты¶
Эти функции поднимают TypeError
при ожидании параметра bytes и вызываются с
не байтовым параметром.
-
PyTypeObject
PyBytes_Type
¶ Сущность
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)¶ - Return value: New reference.
Возвращает новый байтовый объект с копией строки v в качестве значение при успешном выполнении и
NULL
при сбое. Параметр v не должен бытьNULL
; он не будет проверяться.
-
PyObject*
PyBytes_FromStringAndSize
(const char *v, Py_ssize_t len)¶ - Return value: New reference.
Возвращает новый bytes объект с копией строки v как значение и длина, len при успехе, и
NULL
при сбое. Если vNULL
, содержимое объекта bytes не инициализируется.
-
PyObject*
PyBytes_FromFormat
(const char *format, ...)¶ - Return value: New reference.
Принять C
printf()
-стиль format строку и переменное количество аргументов, вычисляет размер получающегося объекта байтов Python и возвращает bytes объект с значениями, отформатированным в него. Переменные аргументы должны иметь тип C и точно соответствовать символам формата в format строке. Допустимы следующие символы формата:Форматные символы Тип Комментарий %%
Литерал % символа. %c
int Один байт, представленный как C int. %d
int Эквивалентный printf("%d")
. [1]%u
unsigned int Эквивалентный printf("%u")
. [1]%ld
long Эквивалентный printf("%ld")
. [1]%lu
unsigned long Эквивалентный printf("%lu")
. [1]%zd
Py_ssize_t Эквивалентный 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* Hex представление указателя C. В основном эквивалентно printf("%p")
, за исключением того, что оно гарантированно начинается с литерала0x
независимо от того, что даетprintf
платформа.Нераспознанный символ формата приводит к тому, что вся остальная строка формата копируются как есть в результирующий объект, а любые дополнительные аргументы отбрасываются.
[1] (1, 2, 3, 4, 5, 6, 7, 8) для целочисленных спецификаторов (d, u, ld, lu, zd, zu, i, x) флаг 0-преобразования действует даже при задании точности.
-
PyObject*
PyBytes_FromFormatV
(const char *format, va_list vargs)¶ - Return value: New reference.
Идентичен
PyBytes_FromFormat()
за исключением того, что он занимает ровно два аргумента.
-
PyObject*
PyBytes_FromObject
(PyObject *o)¶ - Return value: New reference.
Возвращает байтовое представление o объекта, реализующего протокол буфера.
-
Py_ssize_t
PyBytes_GET_SIZE
(PyObject *o)¶ Макро-форма
PyBytes_Size()
, но без проверки ошибок.
-
char*
PyBytes_AsString
(PyObject *o)¶ Возвращает указатель на содержимое o. Указатель ссылается на внутренний буфер o, состоящий из
len(o) + 1
байт. Последний байт в буфере всегда имеет null значение, независимо от наличия других нулевых байтов. Данные нельзя изменять, если только объект не был создан только с помощью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
, объект bytes не может содержать внедренные null байты; в этом случае функция возвращает-1
иValueError
.Буфер относится к внутреннему буферу obj, который включает дополнительный null байт в конце (не подсчитывается в length). Данные нельзя изменять, если только объект не был создан только с помощью
PyBytes_FromStringAndSize(NULL, size)
. Он не должен быть освобожден. Если obj не является объектом байтов,PyBytes_AsStringAndSize()
возвращает-1
и поднимаетTypeError
.Изменено в версии 3.5: Ранее
TypeError
поднималась при обнаружении встроенных пустых байт в объекте bytes.
-
void
PyBytes_Concat
(PyObject **bytes, PyObject *newpart)¶ Создать новый байтовый объект в *bytes, содержащий содержимое newpart, добавленное к bytes; вызывающему будет принадлежать новая ссылка. Ссылка на старое значение bytes будет украдена. Если новый объект не может быть создан, старая ссылка на bytes будет по- прежнему отброшена, а значение *bytes будет иметь значение
NULL
; будет установлено соответствующее исключение.
-
void
PyBytes_ConcatAndDel
(PyObject **bytes, PyObject *newpart)¶ Создать новый байтовый объект в *bytes, содержащий содержимое newpart, добавленное к bytes. Эта версия уменьшает количество ссылок на newpart.
-
int
_PyBytes_Resize
(PyObject **bytes, Py_ssize_t newsize)¶ Способ изменения размера байтового объекта, даже если он является «неизменяемым». Используйте его только для создания совершенно нового байтового объекта; не используйте его, если байты уже известны в других частях кода. Ошибка при вызове этой функции, если количество refcount для объекта входных байтов не равно единице. Передайте адрес существующего байтового объекта в качестве значения lvalue (его можно записать) и требуемого нового размера. При успешном выполнении *bytes содержит объект с измененным размером байтов и возвращенный
0
; адрес в *bytes может отличаться от его входного значения. Если перераспределение завершается неуспешно, исходный байтовый объект в *bytes освобождается, *bytes устанавливается вNULL
,MemoryError
устанавливается и возвращается-1
.