android jni 将BYTE* 和 jbyteArray 之间的转换

来源:互联网 发布:mac如何装office 编辑:程序博客网 时间:2024/05/21 06:41


今天,简单讲讲如何在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 之间的转换就讲完了。


就这么简单。

原创粉丝点击