从Python中,我调用了dll中的一个C#函数。这是由“python.net”完成的。大多数函数都可以在Python中正确调用。但是,有一个函数我遇到了问题,因为参数上的数据类型
在C#中,有一个函数采用无符号长类型:
bool SetValueAsInt64U(ulong rValue);
在Python中,我用
SetValueAsInt64U(22);
这将显示错误消息: TypeError:没有方法与SetValueAsInt64U:(<;class'int'>;)的给定参数匹配
我还尝试使用ctypes,并调用如下函数:
SetValueAsInt64U(c_ulong(22));
这会产生类似的错误: TypeError:没有方法与SetValueAsInt64U:(<;class'ctypes.c_ulong'>;的给定参数匹配)
有关更多信息,我正在显示正确的呼叫。 在C#中,还有另一个带符号参数的函数:
bool SetValueAsInt64(long rValue)
在Python中,我可以在没有任何错误消息的情况下调用该函数,例如:
SetValueAsInt64(-5);
所以问题是,如何使用Python中的无符号参数类型调用C#函数
使用numpy
这种方法不需要更改C代码。它是Python代码中的一个解决方案
numpy数据类型包括: https://numpy.org/devdocs/user/basics.types.html
在这种情况下,我要做的是对该方法进行重载以获取int参数,如果它达到最大int范围2147483647,python将把它解析为ulong
相关问题 更多 >
编程相关推荐