我想在我的 C 模块中传递一个 uint8_t 数组作为函数的参数。
我找不到直接解析这个数组的方法,所以我将它解析为 PyObject_t,然后作为 PyTuple_t 对象进行迭代。这样,我需要将这个元组的每个元素 PyObject_t 转换为 uint8_t。
一旦没有 PyInt_FromUINT8_t 函数或类似的函数,我该怎么做?
我想在我的 C 模块中传递一个 uint8_t 数组作为函数的参数。
我找不到直接解析这个数组的方法,所以我将它解析为 PyObject_t,然后作为 PyTuple_t 对象进行迭代。这样,我需要将这个元组的每个元素 PyObject_t 转换为 uint8_t。
一旦没有 PyInt_FromUINT8_t 函数或类似的函数,我该怎么做?
您通常可以B
使用unsigned char
. 根据Parsing Arguments你应该能够做到:
uint8_t b;
if (!PyArg_ParseTuple("b", &b)) {
return NULL;
}
如果不直接使用参数(例如,您正在处理 a ,PyObject
只需使用或函数之一(https://docs.python.org/3/c-api/number.html?highlight=pynumber#c.PyNumber_AsSsize_t) .PyInt_*
PyLong_*
PyNumber_*
从 a 转换uin8_t
为 aPyObject
也很简单,您可以使用PyInt_FromLong
或PyLong_FromLong