10

C モジュールの関数の引数として uint8_t の配列を渡したいと思います。

この配列を直接解析する方法が見つからなかったので、それを PyObject_t に解析してから、PyTuple_t オブジェクトとして反復しています。このように、このタプルの各要素 PyObject_t を uint8_t にキャストする必要があります。

PyInt_FromUINT8_t 関数などがない場合、どうすればそれを行うことができますか?

4

1 に答える 1

6

通常は、 をB使用するだけで済みますunsigned charParsing Argumentsによると、次のことができるはずです。

uint8_t b;
if (!PyArg_ParseTuple("b", &b)) {
    return NULL;
}

引数を直接使用しない場合 (たとえば、 a を扱っている場合はPyObject、単にPyInt_*,PyLong_*またはPyNumber_*関数のいずれかを使用します ( https://docs.python.org/3/c-api/number.html?highlight=pynumber#c.PyNumber_AsSsize_t ) .

uin8_ta から aへの変換PyObjectも簡単ですPyInt_FromLongPyLong_FromLong

于 2016-04-29T18:14:21.637 に答える