字节对象¶
这些功能提高 TypeError
当需要一个字节参数并用非字节参数调用时。
-
PyTypeObject PyBytes_Type¶
此实例
PyTypeObject
表示python字节类型;它与bytes
在python层中。
-
PyObject *PyBytes_FromString(const char *v)¶
- Return value: New reference.
返回带有字符串副本的新bytes对象 v 作为成功的价值,以及
NULL
失败论。参数 v 不得NULL
不会被检查。
-
PyObject *PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)¶
- Return value: New reference.
返回带有字符串副本的新bytes对象 v 作为价值和长度 len 论成功
NULL
失败论。如果 v 是NULL
,未初始化bytes对象的内容。
-
PyObject *PyBytes_FromFormat(const char *format, ...)¶
- Return value: New reference.
采取C
printf()
风格 格式 字符串和变量个数的参数,计算得到的python bytes对象的大小,并返回一个bytes对象,其中包含格式化为该对象的值。变量参数必须是C类型,并且必须与中的格式字符完全对应。 格式 字符串。允许以下格式字符:设置字符格式
类型
评论
%%
n/a
文字%字符。
%c
int
单字节,表示为C int。
%d
int
相当于
printf("%d")
. 1%u
无符号整型
相当于
printf("%u")
. 1%ld
长的
相当于
printf("%ld")
. 1%lu
无符号长
相当于
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
常量字符 *
以空结尾的C字符数组。
%p
常数空隙 *
C指针的十六进制表示。主要相当于
printf("%p")
除了保证从字面开始0x
不管平台是什么printf
产量。无法识别的格式字符会将格式字符串的其余部分按原样复制到结果对象,并丢弃所有多余的参数。
-
PyObject *PyBytes_FromFormatV(const char *format, va_list vargs)¶
- Return value: New reference.
相同的
PyBytes_FromFormat()
但它只需要两个参数。
-
Py_ssize_t PyBytes_GET_SIZE(PyObject *o)¶
宏观形式
PyBytes_Size()
但是没有错误检查。
-
char *PyBytes_AsString(PyObject *o)¶
返回指向的内容的指针 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)¶
返回对象以空结尾的内容 obj 通过输出变量 缓冲区 和 长度 .
如果 长度 是
NULL
bytes对象不能包含嵌入的空字节;如果包含,则函数返回-1
和AValueError
提高了。缓冲区是指 obj ,结尾处包含一个额外的空字节(不计入 长度 )除非对象是使用
PyBytes_FromStringAndSize(NULL, size)
. 不能解除分配。如果 obj 根本不是字节对象,PyBytes_AsStringAndSize()
返回-1
并提出TypeError
.在 3.5 版更改: 以前,
TypeError
在Bytes对象中遇到嵌入的空字节时引发。
-
void PyBytes_Concat(PyObject **bytes, PyObject *newpart)¶
在中创建新的bytes对象 *bytes 包含的内容 新零件 追加到 字节 ;调用方将拥有新引用。对旧值的引用 字节 会被偷的。如果无法创建新对象,则对 字节 仍将被丢弃 *bytes 将被设置为
NULL
;将设置适当的异常。
-
void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)¶
在中创建新的bytes对象 *bytes 包含的内容 新零件 追加到 字节 . 此版本减少的引用计数 新零件 .
-
int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)¶
一种调整字节对象大小的方法,即使它是“不变的”。只使用它来构建一个全新的字节对象;如果在代码的其他部分已经知道了字节,则不要使用它。如果输入字节对象上的refcount不是1,则调用此函数是错误的。将现有bytes对象的地址作为左值(它可以写入)和所需的新大小传递。关于成功, *bytes 保留已调整大小的字节对象和
0
被退回;地址在 *bytes 可能与输入值不同。如果重新分配失败,则位于 *bytes 被解除分配, *bytes 设置为NULL
,MemoryError
被设置为-1
返回。