Bytes Objects¶
这些函数引用TypeError
时,期望一个字节参数,并用非字节参数调用。
- PyTypeObject
PyBytes_Type
¶ 此实例
PyTypeObject
表示Python字节类型;它与Python层中的bytes
是相同的对象。
- PyObject*
PyBytes_FromStringAndSize
(const char *v, Py_ssize_t len)¶ 在失败时返回一个新的字节对象,字符串v作为值,长度len,成功时返回NULL。如果v为NULL,则字节对象的内容未初始化。
- PyObject*
PyBytes_FromFormat
(const char *format, ...)¶ 使用C
printf()
-style 格式字符串和可变数量的参数,计算生成的Python字节对象的大小,并返回一个字节对象,它。变量参数必须是C类型,并且必须完全对应于格式字符串中的格式字符。允许使用以下格式字符:格式字符 类型 评论 %%
n / a 字面值%character。 %c
int 单个字节,表示为C int。 %d
int 完全等效于 printf("%d")
。%u
unsigned int 完全等效于 printf("%u")
。%ld
长 完全等效于 printf("%ld")
。%lu
unsigned long 完全等效于 printf("%lu")
。%zd
Py_ssize_t 完全等效于 printf("%zd")
。%zu
size_t 完全等效于 printf("%zu")
。%i
int 完全等效于 printf("%i")
。%x
int 完全等效于 printf("%x")
。%s
char * 一个以null结尾的C字符数组。 %p
void * C指针的十六进制表示。大部分等效于 printf("%p")
,除了它确保以字面值0x
开始,而不管平台的printf
。无法识别的格式字符会将所有格式字符串的其余部分按原样复制到结果对象,并丢弃任何额外的参数。
- PyObject*
PyBytes_FromFormatV
(const char *format, va_list vargs)¶ 与
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)
创建对象,否则不得以任何方式修改数据。它不能被释放。If o is not a bytes object at all,PyBytes_AsString()
returns NULL and raisesTypeError
.
- char*
PyBytes_AS_STRING
(PyObject *string)¶ 宏形式的
PyBytes_AsString()
但没有错误检查。
- int
PyBytes_AsStringAndSize
(PyObject *obj, char **buffer, Py_ssize_t *length)¶ 通过输出变量缓冲区和长度返回对象obj的以null结束的内容。
如果length为NULL,则字节对象可能不包含嵌入的空字节;如果是,则函数返回
-1
并且引发ValueError
。缓冲区指的是obj的内部缓冲区,其在结尾处包括一个附加的空字节(不在长度中计算)。除非刚刚使用
PyBytes_FromStringAndSize(NULL, size)
创建对象,否则不得以任何方式修改数据。它不能被释放。If obj is not a bytes object at all,PyBytes_AsStringAndSize()
returns-1
and raisesTypeError
.在版本3.5中更改:以前,在字节对象中遇到嵌入的空字节时,引发了
TypeError
。
- void
PyBytes_Concat
(PyObject **bytes, PyObject *newpart)¶ 在* bytes中创建一个包含字节后附加的newpart内容的新字节对象;调用者将拥有新的引用。对字节的旧值的引用将被窃取。如果无法创建新对象,则仍然会丢弃对字节的旧引用,并且* bytes的值将设置为NULL;将设置适当的异常。