如何在 JNI 中读取字节数组?

2024-04-13

是否可以在 JNI 中引用整个字节数组而不调用任何副本?

在本机 C 代码中,我有一个从 Java 传递的字节数组,我只想将一些数据与该字节数组进行比较,因此我不想进行任何内存复制。是否可以 ?

我知道我可以通过使用类似的 GetPrimitiveArrayCritical 来获取本机中字节数组的指针

JNIEXPORT jbyteArray JNICALL Java_nfore_android_bt_pro_nfhfp_dsp
(JNIEnv *env, jobject jobj, jbyteArray jbIn, jbyteArray jbBase){

    jbyte *bufferIn;
    jbyte *bufferBase;
    bufferIn = (*env)->GetPrimitiveArrayCritical(env, jbIn, NULL);

    LOGD("Begin of dsp()"); 
    LOGD("In dsp() Before Comparing...");

        // Compare bufferIn with bufferBase here...

    LOGD("In dsp() After Comparing...");
    LOGD("End of dsp()");

    (*env)->ReleasePrimitiveArrayCritical(env, jbIn, bufferIn, 0);

    return jbIn;
}

正如您所看到的,因为我可能会更改 jbIn 中的数据,所以我应该使用 GetPrimitiveArrayCritical 来获取其指针并稍后释放它。

但是,如果我只想读取字节数组 jbBase,如何获取 jbBase 的指针而不使用 GetPrimitiveArrayCritical ?

任何建议将不胜感激。多谢。


我使用以下内容来读取字节数组...

jbyte *b = (jbyte *)env->GetByteArrayElements(jbBase, NULL);
// read bytes in *b here
...
// release it
env->ReleaseByteArrayElements(jbBase, b, 0 );

您仍然需要释放它,因为这会阻止垃圾收集器在您仍在使用它时潜在地删除它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JNI 中读取字节数组? 的相关文章

  • 获取数组的第一个元素

    我有一个数组 array 4 gt apple 7 gt orange 13 gt plum 我想获取这个数组的第一个元素 预期结果 字符串apple 要求一 它不能通过引用传递来完成 so array shift这不是一个好的解决方案 我
  • 在函数内部使用时,c 数组大小会发生变化

    我有这段代码 include
  • 将 bytearray 转换为 array.array('B')

    我有一个图像数据 主要如下所示 array B 255 216 255 它属于类型array array B 由于该数据要通过通信通道发送 因此有必要将该数据转换为类型 bytearray 我将数据转换为字节数组 data1 bytearr
  • 如何用php将文件内容转换为字节数组

    我想用PHP将上传的文件保存 插入 到数据库中 数据库字段的类型是varbinary 最后 我想要获得 VarBinary 输出 的内容 就像在 C 中读取文件然后将其存储在字节数组中并将数组插入到 VarBinary 中一样 我与数据库的
  • 创建一个类的所有常量的数组?

    我正在使用一个定义了近 20 个常量的类 因为我希望所有这些常量值都在一个数组中 我只想知道 有没有什么方法可以创建一个类的所有常量的数组 我尝试过compact https www php net manual en function c
  • PySpark 用数组替换 Null

    通过 ID 连接后 我的数据框如下所示 ID Features Vector 1 50 Array 1 1 2 3 2 50 Null 我最终得到 向量 列中某些 ID 的空值 我想用 300 维的零数组替换这些 Null 值 与非空向量条
  • Fortran 中的数组第一个索引

    我认为 Fortran 中数组的第一个索引是 1 但是为什么这段代码可以工作呢 代码是 Wavewatch 的修改部分 http polar ncep noaa gov waves wavewatch http polar ncep noa
  • 这里不允许使用数组初始值设定项[重复]

    这个问题在这里已经有答案了 我正在开发 Android 项目 但收到一个我无法理解的错误 这里不允许使用数组初始值设定项 我试图简化我的代码 结果归结为这一点 public class MainActivity extends Activi
  • 在 MATLAB 中用两个值替换向量值

    我必须创建一个以向量作为输入的函数v和三个标量a b and c 该函数替换了的每个元素v等于a有一个二元素数组 b c 例如 给定v 1 2 3 4 and a 2 b 5 c 5 输出将是 out 1 5 5 3 4 我的第一次尝试是尝
  • 如何在 Fortran 90 中迭代包含数字、单词和空格的字符串?

    文件说明 STL文件由以下部分组成 solid
  • Javascript Concat 多维数组

    我正在尝试连接一个多维数组 以便可以迭代并显示所有数据 有一篇关于如何访问嵌套数据的非常好的帖子here https stackoverflow com questions 11922383 access process nested ob
  • 如何制作自己的 while 循环,就像 WordPress 循环一样?

    我是新来的 也是 PHP 新手 只是想知道如何制作我自己的灵活循环 就像在 WordPress 中一样 注意我不是在谈论 wordpress 我想在我自己的 PHP 应用程序上实现它 我们回顾一下WP 有一段代码是这样的 while hav
  • 如何在 Angular JS 中显示以字节数组形式接收的图像

    我有一个将返回图像的服务器端应用程序 这些是响应标头 Content Disposition attachment filename 8822a009 944e 43f4 999b d297198d302a 1 0 low res Cont
  • 从 MySQL 列创建 PHP 数组

    mysql fetch array会给我一个获取行的数组 从一列中所有行的值生成数组的最佳方法是什么 您可以循环遍历数组并创建一个新数组 如下所示 column array while row mysql fetch array info
  • Angular 2循环遍历列表有一些延迟

    如何使用 Angular 2 和 TypeScript 以一定延迟循环遍历数组 我有一个数组 students Array
  • 使用另一个数组中的值转换所有数组键

    我有很多数组 是从 csv 文件生成的 在所有数组中 第一个数组对象是 csv 标题 请参阅下面的示例 总之 第一个数组的值 即 key 0 和 value report date 应替换所有后续数组的所有键 因此 对除第一个数组之外的所有
  • 将单引号括起来的数组转换为数组

    深度嵌套在 JSON 对象中我有属性value actions name InviteUser type button value Brian Timoney email protected cdn cgi l email protecti
  • 当 $.each 和 array.splice(i) 放在一起时,JQuery 处理数组超出索引错误

    最近我在互联网上搜索一些可以处理废弃的 ajax xhr 调用的代码 这就是我发现的 https stackoverflow com a 8841412 395910 xhrPool ajaxSetup beforeSend functio
  • C# datagridview 列转入数组

    我正在用 C 构建一个程序 并在其中包含一个 datagridview 组件 datagridview 有固定数量的列 2 我想将其保存到两个单独的数组中 但行数确实发生了变化 我怎么能这样做呢 假设一个名为 dataGridView1 的
  • JavaScript 数组中的负索引是否会影响数组长度?

    在javascript中我定义了一个像这样的数组 var arr 1 2 3 我也可以做 arr 1 4 现在如果我这样做 arr undefined 我也失去了对值的引用arr 1 所以对我来说 从逻辑上来说 arr 1 也是arr 但是

随机推荐

  • 如何更改杰克逊的默认具体地图类型?

    我有一个非常简单的 Jackson 代码来反序列化嵌套的 JSON 对象 public class MapTest public static void main String args throws Exception final Str
  • Servlet 中的 iText PDF

    因此 我正在使用此代码从我的服务器创建一个报告 PDF 文件 response setHeader Expires 0 response setHeader Cache Control must revalidate post check
  • 当超级视图完成加载时调整子视图的大小

    我知道有无数类似的问题 要么全部导致使用灵活的高度 宽度 要么将 TranslatesAutoresizingMaskIntoConstraints 设置为 false 我使用我创建的扩展添加了一个视图 extension UIView f
  • 大师必须从纱线、火花开始

    当我想要运行 SparkPi 示例时 我收到此错误 beyhan beyhan spark 1 2 0 bin hadoop2 4 home beyhan spark 1 2 0 bin hadoop2 4 bin spark submit
  • Scala 中的十六进制字符串到 Int、Short 和 Long

    只是找不到在 Scala 中将十六进制字符串转换为数字 Int Long Short 的方法 有没有类似的东西 A toInt base 您可以使用 Java 库 val number Integer parseInt FFFF 16 gt
  • 在 iOS7 上停止 Safari 提示保存卡片数据

    我有一个客户网站 提示他们在 iOS7 下保存卡详细信息 我完全找不到任何关于如何或是什么导致 iOS 决定这是正确的事情的信息 有人有任何想法吗 我们遇到了这个问题 正如 Guy Thomas 提到的 这是因为表单中的密码字段带有抄送字段
  • 有什么方法可以格式化 Plotly for Python 漏斗图中的数字吗?

    我有一个漏斗图 其中一些值大于 9000 这些值用带 K 的点符号显示 表示末尾有千 我花了 20 分钟在 Google 和 Plotly 文档中查找 但未能找到关于如何格式化数字的明确答复 这是输入数据 这是我正在使用的代码 fig px
  • v-bind:style 语法在内联样式中不起作用

    我对 Vue 和整个系统都很了解v bind事情让我陷入困境 基本上 我正在尝试实现这种语法 但是使用 Vue 的v bind 因为我不能在内联 CSS 样式中使用变量 div class card style background col
  • Bash 中使用 if-else 进行整数比较

    我有一个变量叫做choice 现在 我尝试使用 if 来比较输入的值 read choice if choice 2 then do something elif choice 1 then do something else else e
  • 如何打印我的 Java 对象而不得到“SomeType@2f92e0f4”?

    我有一个类定义如下 public class Person private String name constructor and getter setter omitted 我尝试打印我的类的一个实例 System out println
  • 访问表的第n列

    我有一个包含以下结构和数据的表 tr td td tr
  • 服务绑定到活动

    这是我的代码 public class MainActivity extends Activity private ComponentName mService private Servicio serviceBinder private
  • Checkstyle,无法创建根模块

    我正在尝试在项目中配置 Checkstyle 我已经添加 apply plugin checkstyle checkstyle assign the latest checkstyle version explicitly default
  • 如何通过 selenium-webdriver 和 Java 使用 java 实现鼠标悬停

    在尝试实现门户自动化时http demo nopcommerce com http demo nopcommerce com 我无法将鼠标悬停在 电子 菜单上并选择 相机和照片 子菜单 使用以下脚本进行相同的操作 WebElement el
  • 为什么 Matplotlib 颜色图的结构不同?

    我能够绘制 RGB 分量some使用这个简单的 Python 脚本绘制 Matplotlib 颜色图 import numpy as np import matplotlib pyplot as plt from matplotlib im
  • R Shiny:渲染summary.ivreg输出

    我正在尝试在 R Shiny 中呈现工具变量回归摘要 这是代码 iv ivreg lwage educ exper nearc4 exper summary iv 当我使用 renderTable 时 出现以下错误 没有适用于 xtable
  • angular2动态表格计算金额总计

    尝试计算总 payOffs amount payOffs 是一个 FormArray 不知道如何正确执行 以便总数会观察到当前金额和新金额的变化 这是我作为基本代码的 plnkr http plnkr co edit nHSIsciSZNT
  • 使用 C++ 基类构造函数?

    在使用模板时 我遇到需要使基类构造函数可从继承类访问以创建对象 以减少复制 粘贴操作 我想通过这样做using关键字与函数 case 的方式相同 但不起作用 class A public A int val class B public A
  • 无法获取 Cabal 更新以在公司网络内工作

    我正在尝试在工作中使用 haskell 我已经安装了 HP 但无法让 cabal 进行更新 我认为这是一些防火墙或 DNS 问题 cabal update Downloading the latest package list from h
  • 如何在 JNI 中读取字节数组?

    是否可以在 JNI 中引用整个字节数组而不调用任何副本 在本机 C 代码中 我有一个从 Java 传递的字节数组 我只想将一些数据与该字节数组进行比较 因此我不想进行任何内存复制 是否可以 我知道我可以通过使用类似的 GetPrimitiv