[英]How do I pass a ulong type argument to a C# function from Python?
從 Python 中,我正在調用一個位於 dll 中的 C# 函數。 這是由“python.net”完成的。 大多數函數可以在 Python 中正確調用。 但是,由於參數上的數據類型,我遇到了一個函數問題。
在 C# 中,有一個函數,它采用 unsigned long 類型:
bool SetValueAsInt64U(ulong rValue);
在 Python 中,我用
SetValueAsInt64U(22);
這給出了錯誤消息:TypeError:沒有方法匹配 SetValueAsInt64U 的給定參數:(<class 'int'>)
我還嘗試使用 ctypes,並調用如下函數:
SetValueAsInt64U(c_ulong(22));
這給出了一個類似的錯誤:TypeError: No method matching given arguments for SetValueAsInt64U: (<class 'ctypes.c_ulong'>)
有關更多信息,我正在顯示正確的調用。 在 C# 中,還有另一個帶符號參數的函數:
bool SetValueAsInt64(long rValue)
在 Python 中,我可以在沒有任何錯誤消息的情況下調用該函數,例如:
SetValueAsInt64(-5);
所以問題是如何使用 Python 中的無符號類型參數調用 C# 函數?
在這種情況下,我要做的就是重載該方法以接受 int 參數,如果達到最大 int 范圍 2,147,483,647,python 會將其解析為 ulong。
使用麻木。
import numpy as np
dp.SetValueAsInt64U(np.uint64(22));
這種方法不需要更改 C# 代碼。 它是 Python 代碼中的解決方案。
numpy 數據類型是: https : //numpy.org/devdocs/user/basics.types.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.