2015-08-28 73 views
0

我有一個可以從IronPython調用的c#函數。該函數返回一個字節數組,我想將其轉換爲字符串以進行顯示和比較。如何從IronPython中檢索c#字節數組(Byte [])?

Python是告訴我通過輸入參數 - (出字節[]數據出),下面 - 類型 「StrongBox的[數組[字節]]」,所以我轉換 「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 (most recent call last): File "", line 1, in TypeError: expected Array[Byte], got StrongBox[Array[Byte]]

回答

0

您需要在框中,而不是框本身的Value通過。

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