0

我认为非常直接。我非常有信心这是我不知道如何提出简单问题的情况之一。

尝试将 python 对象(列表)转换为无符号字符数组。

PyObject * py_data;
unsigned char c_data[MAX_LENGTH];

// py_data is filled using the PyArg_ParseTuple(....)

// Build the outbound payload
for(i=0; i < block_length; i++)
{
    c_data[i] = HOW_TO_CAST_THIS(py_data[i]);
}

我已经阅读了由 Ned Batchelder 编写的教程,这是一本很棒的读物,但也没有运气。

任何其他教程或参考建议都会很棒。

4

1 回答 1

3

要从元组中取出项目,你必须使用PyTuple_GetItem(或者,如果你知道它是一个元组,你可以使用 unsafe PyTuple_GET_ITEM)。这给了你PyObject

要从 s 中获取ints PyObject,请使用PyInt_AsLong.

永远不要PyObjects 转换为 C 类型(除了void *),并且永远不要尝试PyObject使用索引符号 ( py_data[i]) 对 a 进行索引。两者都会给你带来非常糟糕的结果。始终使用 Python API 方法来处理PyObjects。

于 2013-10-14T13:55:47.000 回答