Как получить массив байтов С# (Byte []) из IronPython?

У меня есть функция С#, которую я могу вызвать из IronPython. Функция возвращает массив байтов, который я хотел бы преобразовать в строку для отображения и сравнения.

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)

Трассировка (последний последний вызов): Файл "", строка 1, в TypeError: ожидаемый массив [байт], полученный StrongBox [массив [байт]]


person onch    schedule 28.08.2015    source источник


Ответы (1)


Вам нужно передать Value коробки, а не саму коробку.

printable_var = System.BitConverter.ToString(var.Value)
person Jeff Mercado    schedule 09.09.2015