Объекты в байтах

Эти функции генерируют TypeError при ожидании параметра bytes и вызываются с параметром, отличным от bytes.

type PyBytesObject

Этот подтип PyObject представляет объект Python 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

Py_ssize_t

Эквивалентно 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.

Вернуться на верх