我正在使用 ctypes 从 python 调用 C DLL。对于大多数功能,一切正常。但是......现在我有一个需要十六进制常量输入的函数,我似乎无法正确传递它。
我没有 C 源代码,但从文档中,函数定义如下:
sensv_bn* NewSensvToFinding_bn (const node_bn* Qnode, const nodelist_bn* Vnodes, int what_find)
我几乎可以肯定我正在传递Qnode
并且Vnodes
正确,因为它们是由 DLL 中的其他函数创建的。问题在于被int
调用的what_find
.
从 DLL 附带的头文件中,我看到以下行:
enum {ENTROPY_SENSV = 0x02, REAL_SENSV = 0x04, VARIANCE_SENSV = 0x100, VARIANCE_OF_REAL_SENSV = 0x104}; /* for NewSensvToFinding_bn */
我试图传递what_find
的值VARIANCE_OF_REAL_SENSV
是十六进制值0x104
。
我尝试在不进行转换的情况下传递它,并将其转换为 int 使用ctypes.c_int(0x104)
,但该函数返回 0 而不是指针。我也尝试过不进行转换而获得相同的结果。
我应该执行更合适的转换吗?如果这是一个非常幼稚的问题,我有点 C n00b 很抱歉。