android jni 将BYTE* 和 jbyteArray 之间的转换
2017-12-21 08:50
411 查看
今天,简单讲讲如何在jni中将
BYTE* 转成 jbyteArray。
这个是我在做jni时碰到的问题。因为c传回的值是BYTE*,而返回给java代码是byte[],对应的jni的数据必须是jbyteArray,所以需要转换。在网上搜索了资料,终于是解决了这个问题。
这个将C++中的BYTE[]转jbyteArray主要是先用jbyte *强制jbyteArray,然后调用SetByteArrayRegin将jbyte *的数据拷贝到新建的jbyteArray、
这个将jbyteArray 转 c++中的BYTE[]主要是获取jbytearray 数据后直接强制为BYTE*。
android jni 将BYTE* 和 jbyteArray 之间的转换就讲完了。
就这么简单。
今天,简单讲讲如何在jni中将
BYTE* 转成 jbyteArray。
这个是我在做jni时碰到的问题。因为c传回的值是BYTE*,而返回给java代码是byte[],对应的jni的数据必须是jbyteArray,所以需要转换。在网上搜索了资料,终于是解决了这个问题。
C++中的BYTE[]转jbyteArray //nOutSize是BYTE数组的长度 BYTE pData[] jbyte *by = (jbyte*)pData; jbyteArray jarray = env->NewByteArray(nOutSize); env->SetByteArrayRegin(jarray, 0, nOutSize, by);
这个将C++中的BYTE[]转jbyteArray主要是先用jbyte *强制jbyteArray,然后调用SetByteArrayRegin将jbyte *的数据拷贝到新建的jbyteArray、
jbyteArray 转 c++中的BYTE[] //jbytearray strIn jbyte * olddata = (jbyte*)env->GetByteArrayElements(strIn, 0); jsize oldsize = env->GetArrayLength(strIn); BYTE* bytearr = (BYTE*)olddata; int len = (int)oldsize;
这个将jbyteArray 转 c++中的BYTE[]主要是获取jbytearray 数据后直接强制为BYTE*。
android jni 将BYTE* 和 jbyteArray 之间的转换就讲完了。
就这么简单。
相关文章推荐
- Android的JNI开发涉及的char和string之间的互相转换
- android jni与java之间数据传输时怎么转换
- android jni c++ jstring和string之间的转换
- Android中JNI使用详解(4)---Java与C之间数据类型转换
- android jni与java之间数据传输时怎么转换
- Android的JNI开发涉及的char和string之间的互相转换
- Android : dip/dp与px(pixel)之间的相互转换
- 带jni和其他项目依赖的eclipse项目转换成android studio项目
- Android JNI 数据类型转换
- android bitmap与base64字符串之间转换
- Android图片二进制与Bitmap之间的转换
- Android中Tablayout设置下划线宽度 和 dp和px之间进行相互转换
- Android中常用单位dp,px,sp之间的相互转换
- Android Bitmap 与 Drawable之间的区别和转换
- Android px、dp、sp之间相互转换
- android bitmap和base64之间的转换
- Android中dp和px之间进行转换
- Android中实现滑动翻页—使用ViewFlipper(dp和px之间进行转换)
- Android使用JNI实现Java与C之间传递数据
- Android Drawable、Bitmap、byte[]之间的转换