如何从IronPython中检索c#字节数组(byte []) ?

本文关键字:byte 数组 字节数 字节 IronPython 检索 | 更新日期: 2023-09-27 18:10:11

我有一个可以从IronPython调用的c#函数。函数返回一个字节数组,我想将其转换为字符串以供显示和比较。

Python告诉我传递输入参数- (out Byte[] DataOut),下面-作为类型"StrongBox[Array[Byte]]",所以我将"var"转换为

clr.Reference[Array[Byte]]() .

如何将其转换为字符串?

namespace My_Library.My_Namespace
{
    /// </summary>
    public class My_App : OSI_Layer
    {
        public bool My_Function(out Byte[] DataOut)
        {
        // fill up DataOut with a string 
            return (Send(out DataOut));
        }
    // etc...
    }
}
//////////////////////////
//
// IronPython
//
// From IronPython I...
>>>
>>> import clr
>>> clr.AddReferenceToFileAndPath('My_Library.dll')
>>> from My_Library.My_Namespace import My_App
>>> App = My_App()
>>>
>>> from System import Array, Byte      
>>> var = clr.Reference[Array[Byte]]() # Create type StrongBox[Array[Byte]]"
>>>
>>> clr.Reference[Array[Byte]]
<type 'StrongBox[Array[Byte]]'>
>>>
>>> App.My_Function(var)
>>>
True
>>> var
<System.Byte[] object at 0x000000000000002B [System.Byte[]]>
>>>
>>> printable_var = System.BitConverter.ToString(var)

Traceback(最近一次调用):文件",第1行TypeError: expected Array[Byte], got StrongBox[Array[Byte]]

如何从IronPython中检索c#字节数组(byte []) ?

您需要传入框的Value,而不是框本身。

printable_var = System.BitConverter.ToString(var.Value)