Old Buffer Protocol

自3.0版起已弃用。

在Python 3中,这个协议不再存在,但功能仍然容易移植2.x代码。它们作为new buffer protocol的兼容性包装器,但它们不能控制导出缓冲区时获取的资源的生命周期。

因此,建议您调用PyObject_GetBuffer()(或y*w* format codes PyArg_ParseTuple()函数系列)获取对象的缓冲区视图,PyBuffer_Release()时可以释放缓冲区视图。

int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)

返回指向可用作基于字符输入的只读存储器位置的指针。obj参数必须支持单段字符缓冲区接口。成功时,返回0,将缓冲区设置为存储器位置,将buffer_len设置为缓冲区长度。返回-1并在错误时设置TypeError

int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)

返回指向包含任意数据的只读存储器位置的指针。obj参数必须支持单段可读缓冲区接口。成功时,返回0,将缓冲区设置为存储器位置,将buffer_len设置为缓冲区长度。返回-1并在错误时设置TypeError

int PyObject_CheckReadBuffer(PyObject *o)

如果o支持单段可读缓冲区接口,则返回1否则返回0

int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)

返回指向可写内存位置的指针。obj参数必须支持单段,字符缓冲区接口。成功时,返回0,将缓冲区设置为存储器位置,将buffer_len设置为缓冲区长度。返回-1并在错误时设置TypeError