java里面有如下本地定义:

private static native int setFilter(final int fd, final int[][] array_filter);

c++中对应的函数如下:

JNIEXPORT jint JNICALL Java_JniSocketCan_setFilter

(JNIEnv *env, jclass obj, jint fd, jobjectArray array_filter)

{

struct can_filter *pFilter = NULL;

jint filter_num = 0;

jint column_num = 0;

jint i;

jintArray filter_tmp;

jint mem_length = 0;

filter_num = env->GetArrayLength(array_filter);

DBG("filter_num = %d\n", filter_num);

mem_length = filter_num * sizeof(struct can_filter);

pFilter = (struct can_filter*)malloc(mem_length);

if (NULL == pFilter) {

LOG_ERR("memory is not enough, allocate failed\n");

return -2;

}

for (i = 0; i < filter_num; i++) {

filter_tmp = (jintArray)(env->GetObjectArrayElement(array_filter, i));

column_num = env->GetArrayLength(filter_tmp);

if (2 != column_num) {

LOG_ERR("array_filter column != 2, we only need can_id and can_mask\n");

return -1;

}

jint *pColumnData = env->GetIntArrayElements(filter_tmp, 0 );

pFilter[i].can_id = pColumnData[0];

pFilter[i].can_mask = pColumnData[1];

DBG("%d:id=0x%x,mask=0x%x\n", i, pFilter[i].can_id, pFilter[i].can_mask);

env->ReleaseIntArrayElements(filter_tmp, pColumnData, 0);

}

jint ret = setsockopt(fd, SOL_CAN_RAW, CAN_RAW_FILTER, pFilter, mem_length);

free(pFilter);

return ret;

}

java中调用的代码如下:

int[][] can_filter = {

{0x234,0x7FF},

{0x235,0x7FF}

};

canTest.setFilter(s, can_filter);

原文:http://www.cnblogs.com/eaggle/p/7777738.html

java 二维数组作为参数传递_java JNI 二维数组作为方法参数传递给本地相关推荐

  1. java list作为参数传递_Java 程序将lambda表达式作为方法参数传递

    Java 程序将lambda表达式作为方法参数传递 在此示例中,我们将学习将lambda表达式作为Java中的方法参数传递. 要理解此示例,您应该了解以下Java编程主题: 示例1:将lambda表达 ...

  2. java二维数组怎么看_java、二维数组详解!

    /* java 二维数组的概念 使用方法! 1.什么是二维数组? 答案:数组的数组! 他的每一个元素都是数组!二维数组是(存储一维数组的)一维数组. 2.如何定义?(以二维数组为列) int arr[ ...

  3. java 数组下标 变量_Java基础语法:数组

    一.简介 描述: 数组是相同类型数据的有序集合. 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们. 基本特点: 数组的长度是确定的.数组一旦被创建,它的大小就是不可以改变的. ...

  4. java 十六进制数组转字符串_Java通用将字节数组转换为字符串(非十六进制,十进制)...

    将字节数组转换为具有选择基数的字符串的最佳方法是什么? S.O上有大量示例.在其他地方转换为十六进制字符串.我主要感兴趣的是将其转换为十六进制或十进制字符串以外的内容:也是更通用的方式 这是我目前正在 ...

  5. java 根据类名示例化类_Java即时类| EpochSecond()方法的示例

    java 根据类名示例化类 EpochSecond()方法的即时类 (Instant Class ofEpochSecond() method) Syntax: 句法: public static I ...

  6. java利用二维数组查找鞍点_java找二维数组的鞍点

    LOGO 制作者: 制作者: 班级: 班级: 学号: 学号: 指导老师: 指导老师: 一.设计要求 求一个二维数组中的鞍点,即 该位置上的元素在该...... 54,98 19,32,34,65,34 ...

  7. java 数组集合转换_Java 实例 – 集合转数组

    Java 实例 - 集合转数组 以下实例演示了如何使用 Java Util 类的 list.add() 和 list.toArray() 方法将集合转为数组: /* author by w3cscho ...

  8. java 数组地图绘画_Java将地图转换为数组[Snippet]

    让我们编写一个将Map值转换为String数组的Java程序. 将映射值转换为数组示例 包 网.javaguides.corejava ; 导入 java.util.数组 ; 导入 java.util ...

  9. java对类数组进行排序_Java比较器类对数组进行排序

    小编典典 [-]应该如何声明Java Comparator类以按其降序将数组的第一个元素排序 [-] 这是使用Java 8的完整示例: import java.util.*; public class ...

最新文章

  1. Django进阶之session
  2. 高校开学需要重新分配宿舍!国家卫健委和教育部发布重要通知
  3. 以下可以采用python语言保留字的是-模拟试卷C单项选择题
  4. 注册中心—组件—Consul
  5. php 怎么从memcache缓存数据中统计某一字段总数,php和memcache统计在线人数的方法...
  6. poj 1734 (最小环)
  7. 设置负数_合同到期提示设置,还在手动计算就out了,学会today函数一键搞定
  8. Windows Xp 优化文件 的一段BAT代码
  9. intelssd在linux固件升级,BUG不再难缠 教会您升级主流SSD固件
  10. 从《色戒》,看人性的欲望
  11. PHP-简单的留言薄功能
  12. 二本电气工程应届生收割5个offer,转型大数据真的与专业无关
  13. WordPress缩略图美化插件ThnBoV1.3.1ThnBo
  14. 从零开始入门 K8s | Kubernetes API 编程利器:Operator 和 Operat
  15. 一种基于输出电压的欠压保护电路设计方案
  16. 【Chrome】图片批量下载扩展zzllrr Imager小乐图客V1.4 (支持正则表达式、自定义JS代码、自定义引擎、多网站取图规则)...
  17. DOS之父加里·基尔代尔
  18. 图像质量调试色温值对照2021-04-20
  19. 月租最便宜的手机卡_有什么很划算的手机卡套餐?
  20. 最近两周我们接触到的两种线上抓娃娃机的技术实现方案(一种RTSP/一种RTMP)

热门文章

  1. C#访问MySQL数据库的方法
  2. n型半导体和p型半导体的区别_王煜JMCA: N, P掺杂碳负载的PtP2纳米颗粒自转化为核壳型Pt/PtP2:一种高效和稳定的ORR催化剂...
  3. CAN 总线 之一 总线拓扑、物理电平、发展史 详解
  4. Oracle原理: 行级锁和表级锁
  5. Linux / 设置和查看环境变量的方法
  6. ubuntu 18.04下按照搜狗输入法
  7. VS2010下使用dmp文件和pdb文件定位程序异常代码行号的注意事项
  8. 三星应用程序照相机(在com.sec.android.app),三星智能相机软件下载-三星智能相机app下载V1.4.0官方版-西西软件下载...
  9. 2个网页跳来跳去_成为搜索产品经理(2):认识网络爬虫
  10. 【AI呀,我去】科技圈顶流——元宇宙上线,快来揭开它的神秘面纱