C モジュールの関数の引数として uint8_t の配列を渡したいと思います。
この配列を直接解析する方法が見つからなかったので、それを PyObject_t に解析してから、PyTuple_t オブジェクトとして反復しています。このように、このタプルの各要素 PyObject_t を uint8_t にキャストする必要があります。
PyInt_FromUINT8_t 関数などがない場合、どうすればそれを行うことができますか?
C モジュールの関数の引数として uint8_t の配列を渡したいと思います。
この配列を直接解析する方法が見つからなかったので、それを PyObject_t に解析してから、PyTuple_t オブジェクトとして反復しています。このように、このタプルの各要素 PyObject_t を uint8_t にキャストする必要があります。
PyInt_FromUINT8_t 関数などがない場合、どうすればそれを行うことができますか?
通常は、 をB
使用するだけで済みますunsigned char
。Parsing 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_t
a から aへの変換PyObject
も簡単ですPyInt_FromLong
。PyLong_FromLong