如何将ulong类型参数从Python传递给C#函数?

2024-07-02 12:31:44 发布

您现在位置:Python中文网/ 问答频道 /正文

从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#函数


Tags: 方法函数ltgt消息类型参数错误
2条回答

使用numpy

import numpy as np

dp.SetValueAsInt64U(np.uint64(22));

这种方法不需要更改C代码。它是Python代码中的一个解决方案

numpy数据类型包括: https://numpy.org/devdocs/user/basics.types.html

在这种情况下,我要做的是对该方法进行重载以获取int参数,如果它达到最大int范围2147483647,python将把它解析为ulong

相关问题 更多 >