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