JNI byteArray 传递与返回

JNIEXPORTjbyteArray JNICALL Java_com_example_hellojni_AES_AES_1Encrypt

(JNIEnv *env, jobject jo, jbyteArray key){

// jbyte* pJbyte = (*env)->GetByteArrayElements(env,key,0);

// jbyte keyArray[keyLen];

// int i ;

// for(i=0 ;i<keyLen;i++){

// keyArray[i]=*(pJbyte+i);

// }

jbyte* bytekey =(*env)->GetByteArrayElements(env,key, 0);

int bytekeylen = (*env)->GetArrayLength(env,key);

jbyteArray jarrRV =(*env)->NewByteArray(env,bytekeylen);

(*env)->SetByteArrayRegion(env,jarrRV, 0,bytekeylen,bytekey);

return jarrRV;

// char chTmp[] = "Hello!";

// int nTmpLen = strlen(chTmp);

// //获取jbyteArray

// char *chArr = (char*)(*env)->GetByteArrayElements(env,key,0);

// //获取jbyteArray长度

// int nArrLen = (*env)->GetArrayLength(env,key);

//

// char *szStrBuf =(char*)malloc(nArrLen*2+10);//申请内存

// memset(szStrBuf, 0, nArrLen*2+10); //内存初始化

// //将jbArr作为输出形参

// memset(chArr, 0, nArrLen);

// memcpy(chArr, chTmp, nTmpLen); //拷贝chTmp内存中nTmpLen长度到chArr内存中

// //返回jbyteArray

// jbyteArray jarrRV =(*env)->NewByteArray(env,nTmpLen);//创建一个byte数组

// jbyte *jby =(*env)->GetByteArrayElements(env,jarrRV,0);

// memcpy(jby, chTmp, strlen(chTmp));

// (*env)->SetByteArrayRegion(env,jarrRV,0,nTmpLen, jby);

// return jarrRV;

}

经验分享 程序员 微信小程序 职场和发展