python - 如何处理 Python 扩展上的 uint8_t?

标签 python python-extensions uint8t

我想在我的 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_FromLongPyLong_FromLong

关于python - 如何处理 Python 扩展上的 uint8_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36869913/

相关文章:

python - 如何构建和分发依赖于第三方 libFoo.so 的 Python/Cython 包

python - 如何在 Python 中用逗号和指定的精度数字格式化数字

python - 将单词合并成一行

python - Pandas.DataFrame - 查找可用值的最早日期

c++ - 1 字节整数数据类型

c++ - 在 C++ 中将十六进制转换为 uint8_t

c - 赋值从指针生成整数而不进行强制转换 [-Wint-conversion

python - 不显示删除的 Sprite ,Pygame

python - 在 Windows 8 上为 python 2.7 构建带有多个 pyx 文件的 cython

python - Py_BuildValue : make tuple with bool?