繁体   English   中英

如何从IronPython检索ac#字节数组(Byte [])?

[英]How does one retrieve a c# byte array (Byte[]) from IronPython?

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

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)

追溯(最近一次呼叫最近):TypeError中的文件“”,第1行:预期的Array [Byte],得到了StrongBox [Array [Byte]]

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM