我很想直截了当。我非常有信心这是我不知道如何提出这个简单问题的案例之一。
尝试将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]);
}
我已经阅读了tutorial written by Ned Batchelder,这是一本很好的阅读,以及没有运气的Google搜索。
任何其他教程或参考建议都会很棒。
答案 0 :(得分:3)
要从元组中获取项目,您必须使用PyTuple_GetItem
(或者,如果您知道它是一个元组,则可以使用不安全的PyTuple_GET_ITEM
)。这会为您提供PyObject
s。
要从int
获取PyObject
,请使用PyInt_AsLong
。
从不将PyObject
转换为C类型(void *
除外),从不尝试使用PyObject
进行索引索引表示法(py_data[i]
)。两者都会给你很糟糕的结果。始终使用Python API方法来处理PyObject
s。