我想在我的 C 模块中传递一个 uint8_t 数组作为函数的参数。
我找不到直接解析此数组的方法,因此我将其解析为 PyObject_t,然后作为 PyTuple_t 对象进行迭代。这样,我需要将此元组的每个元素 PyObject_t 转换为 uint8_t。
如果没有 PyInt_FromUINT8_t 函数或类似函数,我该怎么做?
最佳答案
您通常可以使用 unsigned char
来摆脱 B
。根据Parsing Arguments你应该能够做到:
uint8_t b;
if (!PyArg_ParseTuple("b", &b)) {
return NULL;
}
如果不直接使用参数(例如,您正在处理 PyObject
,只需使用 PyInt_*
、PyLong_*
或 PyNumber_*
函数(https://docs.python.org/3/c-api/number.html?highlight=pynumber#c.PyNumber_AsSsize_t)。
从 uin8_t
转换为 PyObject
也很简单,您可以使用 PyInt_FromLong
或 PyLong_FromLong
关于python - 如何处理 Python 扩展上的 uint8_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36869913/