当前位置: 首页 > news >正文

jni 返回二维byte数组

在JNI中返回二维byte数组,你需要在Java中准备一个相应的二维数组来接收这个返回值。在JNI层面,你可以创建一个二维的byte数组,并使用GetByteArrayRegionSetByteArrayRegion来操作它。

以下是一个简单的例子:

public class JniTest {static {System.loadLibrary("jni_test");}public native byte[][] get2DByteArray();public static void main(String[] args) {JniTest test = new JniTest();byte[][] result = test.get2DByteArray();// 处理返回的二维数组for (byte[] innerArray : result) {for (byte value : innerArray) {System.out.print(value + " ");}System.out.println();}}
}

JNI C/C++端代码:

#include <jni.h>JNIEXPORT jobjectArray JNICALL
Java_JniTest_get2DByteArray(JNIEnv *env, jobject obj) {// 创建一个2x2的二维byte数组jclass byteArrayClass = (*env)->FindClass(env, "[B");jobjectArray result = (*env)->NewObjectArray(env, 2, byteArrayClass, NULL);for (int i = 0; i < 2; ++i) {jbyteArray innerArray = (*env)->NewByteArray(env, 2);jbyte bytes[2] = {(jbyte)(i * 2), (jbyte)(i * 2 + 1)};(*env)->SetByteArrayRegion(env, innerArray, 0, 2, bytes);(*env)->SetObjectArrayElement(env, result, i, innerArray);(*env)->DeleteLocalRef(env, innerArray);}return result;
}

确保你的JNI函数名称与Java中声明的本地方法签名相匹配。例如,Java_JniTest_get2DByteArraypublic native byte[][] get2DByteArray();

这个例子创建了一个2x2的二维byte数组,并在JNI层面初始化了它。然后将其返回给Java层,在Java中打印出数组中的值。

http://www.lryc.cn/news/345892.html

相关文章:

  • “webpack-dev-server --config build/webpack.dev.conf.js” 请问这个问题要如何修复
  • TOOL使用fiddler导出的har文件导入到postman测试接口
  • 第十三届蓝桥杯决赛(国赛)真题 Java A 组【原卷】
  • 数据结构_顺序表中基本操作的实现_代码
  • 提升SEO排名!SSL证书对SEO效果的积极影响
  • JAVA 项目<果园之窗>_完结
  • Vue + Vite + Axios 项目多环境以及部署前后端跨域
  • Nginx+GateWay
  • React中间件的概念以及常用的实现
  • 如何对团队成员进行六西格玛管理的培训?
  • Zibll 子比文章标题加上渐变彩色文字
  • C/C++ StringToAddress(字符串转 boost::asio::ip::address)
  • 【玩转Google云】构建安全高效的电商系统:GCP VPC 网络规划指南
  • 【YOLO改进】换遍MMDET主干网络之Pyramid Vision Transformerv2(PVTv2)(基于MMYOLO)
  • 【漏洞复现】RuvarOA协同办公平台 WorkFlow接口处存在SQL注入
  • Kubelet containerd 管理命令 ctr常用操作
  • 求一个B站屏蔽竖屏视频的脚本
  • 用Github+HUGO搭建博客的经验教训
  • MongoDB4.4操作命令
  • 共享旅游革命:千益畅行卡的优势揭秘
  • 【doghead】mac: clion2024.1启动崩溃
  • 企业合规视角下的菜鸟网络与拼多多不正当竞争案
  • 如何在Java中处理日期和时间?介绍Java 8中的时间API
  • 24数维杯ABC题思路已更新!!!!
  • Fastapi+docker+tortoise-orm+celery
  • springBoot笔记五(pom.xml\yml)
  • 三生随记——耳机里的诅咒
  • 嵌入式学习<2>:EXTI、ADC、NVIC和AFIO
  • Nginx - server、listen、server_name和多服务请求处理(三)
  • C语言/数据结构——(相交链表)