首页 技术 正文
技术 2022年11月15日
0 收藏 965 点赞 5,037 浏览 723 个字

这个char*假设是一般的字符串的话,作为string传回去就能够了。假设是含有’\0’的buffer,最好作为bytearray传出,由于能够制定copy的length。假设copy到string,可能到’\0’就截断了。

有两种方式传递得到的数据: 

      一种是在jni中直接new一个byte数组。然后调用函数(*env)->SetByteArrayRegion(env, bytearray, 0, len, buffer);将buffer的值copy到bytearray中,函数直接return bytearray就能够了。

一种是return错误号,数据作为參数传出。可是java的基本数据类型是传值,对象是传递的引用,所以将这个须要传出的byte数组用某个类包一下,例如以下: 

class RetObj 

    public byte[] bytearray; 

这个对象作为函数的參数retobj传出。通过例如以下函数将retobj中的byte数组赋值便于传出。代码例如以下: 

jclass cls; 

jfieldID fid; 

jbyteArray bytearray; 

bytearray = (*env)->NewByteArray(env,len); 

(*env)->SetByteArrayRegion(env, bytearray, 0, len, buffer); 

cls = (*env)->GetObjectClass(env, retobj); 

fid = (*env)->GetFieldID(env, cls, "retbytes", "[B"]);

(*env)->SetObjectField(env, retobj, fid, bytearray);

结束。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,155
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,624
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,468
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,240
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,875
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,043