如何处理 Python 扩展上的 uint8_t?
How to deal with uint8_t on a Python Extension?
我想将 uint8_t 的数组作为我的 C 模块中函数的参数传递。
我找不到直接解析这个数组的方法,所以我将它解析为 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
我想将 uint8_t 的数组作为我的 C 模块中函数的参数传递。
我找不到直接解析这个数组的方法,所以我将它解析为 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