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

使用swig追加到字节数组

蓝昊然
2023-03-14

我想使用swig从C附加到Javabyte[]。诀窍是在不调用GetByteArrayElements的情况下执行此操作,因为如果无法固定byte[],这将生成byte[]的副本。

没有swig,我们可以使用SetByteArrayArea轻松做到这一点-直接将字节数写入byte[]。swg的问题是:

>

  • 执行实际工作的代码在. cpp中-例如读取文件的内容并将其放入字符串fileContents中。c代码无权访问jni字段。

    执行SetByteArrayRegion的代码位于中。i文件-它无权访问c函数生成的fileContents数据。

    我找不到任何使用swig将c函数生成的数据附加到字节[]的示例,而不固定整个缓冲区,只使用SetByteArrayRegion复制必要的数据。

    要实现的示例c功能:

    
        void append(char *s, int pos) {
          char* fileContents = readFromFile();
          strcat(s+pos, fileContents);
        }
    

    可能的变通解决方案:

    在. i文件中,我们执行实际实现(调用readFromFile),并使用这些结果直接在%模板中调用SetByteArrayArea。这相当粗鲁。

  • 共有1个答案

    康言
    2023-03-14

    java阵列无法增长。一旦制作完成,它们的尺寸就锁定了。唯一的选择是创建一个新的字节数组并返回该数组(并且编写最终调用代码的任何代码不仅传递一个字节数组,而且还将用返回的任何内容替换它自己的变量;如果不这样做,您将无能为力)。

     类似资料:
    • 问题内容: 我有一个函数,它返回像这样的字典: 我试图将此字典追加到这样的数据框: 不幸的是,数据框的打印导致空的数据框。有任何想法吗? 问题答案: 您没有将值分配给结果。

    • Javascript ArrayBuffer或TypedArrays没有任何类型的appendByte()、appendBytes()或appendBuffer()方法。所以,如果我想一次填充一个数组缓冲一个值,我该怎么做呢?

    • 我有一个关于在Swift iOS中添加Firebase数据到数组的问题。当我对超链接中给出的数据使用运行此代码时,它会给出所具有的元素数。但是,我想把所有的元素都放入一个数组中。 例如,当我运行时,我希望在的情况下获取所有值。并且,将这些元素存储在数组中。你能帮我一下吗? 但是,快照应该有425个这样的元素

    • 问题内容: 无法附加到吗? 我正在尝试附加到对象列表。摘录之后的片段是每当作业完成时都会调用的函数。 但是,当我尝试读取它时,我只会得到文件中的第一个。然后我得到java.io.StreamCorruptedException。 要阅读我正在使用 我不知道会出现多少个对象,因此我在阅读时没有例外。根据Google的说法,这是不可能的。我想知道是否有人知道吗? 问题答案: 这是窍门:子类Object

    • 我正在使用JSON结构来存储一个人的详细信息。基本上姓名,电话,注册时间戳等,将是其他属性,主键将是电子邮件地址。 MarkedLocation、visitedLocations、searchHistory和recommendation是AWS所称的列表或地图。它将包含许多JSON对象。 JSON结构- 在应用程序中,如果用户访问一个新位置,我需要向markedLocations添加一个新的JSO

    • 问题内容: 如果类型不匹配,可以将一些元素追加到elasticsearch字段吗?如果我有这样的文件: 而且我想像这样附加另一个标签字段“蓝色”: 我想要的结果类似于: 我知道这个: 用于将字符串追加到另一个字符串 还有这个: 用于将另一个元素追加到列表。那么有什么办法可以将另一个元素附加到字符串字段呢?谢谢您的任何建议。 问题答案: 您可以做的是添加针对字段类型的测试,然后将其转换为数组。该脚本