10

我想在我的 C 模块中传递一个 uint8_t 数组作为函数的参数。

我找不到直接解析这个数组的方法,所以我将它解析为 PyObject_t,然后作为 PyTuple_t 对象进行迭代。这样,我需要将这个元组的每个元素 PyObject_t 转换为 uint8_t。

一旦没有 PyInt_FromUINT8_t 函数或类似的函数,我该怎么做?

4

1 回答 1

6

您通常可以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_FromLongPyLong_FromLong

于 2016-04-29T18:14:21.637 回答