簡體   English   中英

如何從 Python 將 ulong 類型參數傳遞給 C# 函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM