当前位置: 首页 > 知识库问答 >
问题:

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

滕学义
2023-03-14

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

Python告诉我要将输入参数(out Byte[]DataOut)传递为类型“strongbox[array[Byte]]”,所以我用

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(最近调用最后):File“”,第1行,在TypeError:expected array[Byte],got strongbox[array[Byte]]中

共有1个答案

单于亮
2023-03-14

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

printable_var = System.BitConverter.ToString(var.Value)
 类似资料:
  • 为了在IronPython中使用外部dll,我必须将一个字符串传递给一个char数组(在C++.NET中是char var[len];)。似乎期望传递一个SByte数组。 如果我尝试 我得到 网上的信息很少。到目前为止,我发现我可以应用这样的内容:

  • 问题内容: 假设我已经在Android资源中存储了一个二维数组,如下所示。如何在Arraylist这样的Java集合中获取它们? 例如,在一维数组的情况下,我们可以使用 当countries_array像 问题答案: 资源文件的元素只能用于一维数组。换句话说,介于和之间的所有内容都被视为单个字符串。 如果你想存储你所描述的方式(有效伪XML)的数据,你需要获得项目作为一个单一的使用和解析和元素自己

  • 问题内容: 我目前正在使用PdfBox作为pdf文件编辑器应用程序的驱动程序。我需要pdf文件(PDDocument)的PdfBox表示形式的内容作为字节数组。有谁知道如何做到这一点? 问题答案: 我希望还不晚… 瞧!您已经有了两个输入流!

  • 问题内容: 我的arraylist包含String数组对象。我如何获得所有价值?我的代码如下 如果我尝试像上面给出的那样进行检索, 怎么做? 问题答案: 您还必须遍历字符串数组。

  • {“type”:“record”、“name”:“twitter_schema”、“namespace”:“com.miguno.avro”、“fields”:[{“name”:“username”、“type”:“string”、“doc”:“Twitter.com上的用户帐户名称”}、{“name”:“tweet”、“type”:“string”、“doc”:“用户的Twitter消息内容”}

  • 问题内容: 给定任意实例,包括运行时生成的实例(磁盘上没有文件),是否有任何方法获取类字节? 问题答案: 通常,这是不可能的。在加载类时,JVM会解析其字节码并将其转换为内部表示形式。此后,JVM可以随意忘记原始字节码,这就是HotSpot JVM真正发生的情况。 但是,对于某些黑客,可以检查内部类表示并将其转换回有效的类文件(尽管它将与原始字节码不同)。在HotSpot JVM中,该过程用于重新