java 二维数组作为参数传递_java JNI 二维数组作为方法参数传递给本地
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 二维数组作为方法参数传递给本地相关推荐
- java list作为参数传递_Java 程序将lambda表达式作为方法参数传递
Java 程序将lambda表达式作为方法参数传递 在此示例中,我们将学习将lambda表达式作为Java中的方法参数传递. 要理解此示例,您应该了解以下Java编程主题: 示例1:将lambda表达 ...
- java二维数组怎么看_java、二维数组详解!
/* java 二维数组的概念 使用方法! 1.什么是二维数组? 答案:数组的数组! 他的每一个元素都是数组!二维数组是(存储一维数组的)一维数组. 2.如何定义?(以二维数组为列) int arr[ ...
- java 数组下标 变量_Java基础语法:数组
一.简介 描述: 数组是相同类型数据的有序集合. 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们. 基本特点: 数组的长度是确定的.数组一旦被创建,它的大小就是不可以改变的. ...
- java 十六进制数组转字符串_Java通用将字节数组转换为字符串(非十六进制,十进制)...
将字节数组转换为具有选择基数的字符串的最佳方法是什么? S.O上有大量示例.在其他地方转换为十六进制字符串.我主要感兴趣的是将其转换为十六进制或十进制字符串以外的内容:也是更通用的方式 这是我目前正在 ...
- java 根据类名示例化类_Java即时类| EpochSecond()方法的示例
java 根据类名示例化类 EpochSecond()方法的即时类 (Instant Class ofEpochSecond() method) Syntax: 句法: public static I ...
- java利用二维数组查找鞍点_java找二维数组的鞍点
LOGO 制作者: 制作者: 班级: 班级: 学号: 学号: 指导老师: 指导老师: 一.设计要求 求一个二维数组中的鞍点,即 该位置上的元素在该...... 54,98 19,32,34,65,34 ...
- java 数组集合转换_Java 实例 – 集合转数组
Java 实例 - 集合转数组 以下实例演示了如何使用 Java Util 类的 list.add() 和 list.toArray() 方法将集合转为数组: /* author by w3cscho ...
- java 数组地图绘画_Java将地图转换为数组[Snippet]
让我们编写一个将Map值转换为String数组的Java程序. 将映射值转换为数组示例 包 网.javaguides.corejava ; 导入 java.util.数组 ; 导入 java.util ...
- java对类数组进行排序_Java比较器类对数组进行排序
小编典典 [-]应该如何声明Java Comparator类以按其降序将数组的第一个元素排序 [-] 这是使用Java 8的完整示例: import java.util.*; public class ...
最新文章
- Django进阶之session
- 高校开学需要重新分配宿舍!国家卫健委和教育部发布重要通知
- 以下可以采用python语言保留字的是-模拟试卷C单项选择题
- 注册中心—组件—Consul
- php 怎么从memcache缓存数据中统计某一字段总数,php和memcache统计在线人数的方法...
- poj 1734 (最小环)
- 设置负数_合同到期提示设置,还在手动计算就out了,学会today函数一键搞定
- Windows Xp 优化文件 的一段BAT代码
- intelssd在linux固件升级,BUG不再难缠 教会您升级主流SSD固件
- 从《色戒》,看人性的欲望
- PHP-简单的留言薄功能
- 二本电气工程应届生收割5个offer,转型大数据真的与专业无关
- WordPress缩略图美化插件ThnBoV1.3.1ThnBo
- 从零开始入门 K8s | Kubernetes API 编程利器:Operator 和 Operat
- 一种基于输出电压的欠压保护电路设计方案
- 【Chrome】图片批量下载扩展zzllrr Imager小乐图客V1.4 (支持正则表达式、自定义JS代码、自定义引擎、多网站取图规则)...
- DOS之父加里·基尔代尔
- 图像质量调试色温值对照2021-04-20
- 月租最便宜的手机卡_有什么很划算的手机卡套餐?
- 最近两周我们接触到的两种线上抓娃娃机的技术实现方案(一种RTSP/一种RTMP)
热门文章
- C#访问MySQL数据库的方法
- n型半导体和p型半导体的区别_王煜JMCA: N, P掺杂碳负载的PtP2纳米颗粒自转化为核壳型Pt/PtP2:一种高效和稳定的ORR催化剂...
- CAN 总线 之一 总线拓扑、物理电平、发展史 详解
- Oracle原理: 行级锁和表级锁
- Linux / 设置和查看环境变量的方法
- ubuntu 18.04下按照搜狗输入法
- VS2010下使用dmp文件和pdb文件定位程序异常代码行号的注意事项
- 三星应用程序照相机(在com.sec.android.app),三星智能相机软件下载-三星智能相机app下载V1.4.0官方版-西西软件下载...
- 2个网页跳来跳去_成为搜索产品经理(2):认识网络爬虫
- 【AI呀,我去】科技圈顶流——元宇宙上线,快来揭开它的神秘面纱