1:C语言char转JNI 中jByteArray 给java使用
int setjArraybyte(JNIEnv *env,jclass cls,jmethodID mid,char* pat)
{LOGE("callback to setjArraybyte");
jByteArray jbarray = (*env)->NewByteArray(env,2);//建立jbarray数组
BYTE aByte[2]; //定义两个长度的BYTE数组
BYTE *pData;
pData=(BYTE*)pat; //将char强制转换成BYTE
aByte[0]=0xF1;
aByte[1]=pData;
jbyte *jy=(jbyte*)aByte; //BYTE强制转换成Jbyte;
(*env)->SetByteArrayRegion(env,jbarray, 0, 2, jy); //将Jbyte 转换为jbarray数组
(*env)->CallStaticVoidMethod(env,cls, mid,jbarray); //回调java方法
}
2:jbyteArray转C用BYTE数组
|
JNIEXPORT void JNICALL test (JNIEnv *env, jobject, jbyteArray byarray){ jsize len = env->GetArrayLength(byarray); jbyte *jbarray = (jbyte *)malloc(len * sizeof(jbyte)); env->GetByteArrayRegion(byarray,0,len,jbarray); BYTE *dDate=(BYTE*)jbarray; } |
本文介绍了如何在C语言中通过JNI将`char*`转换为`jbyteArray`,并传递给Java代码进行使用。首先,通过`SetByteArrayRegion`方法设置`jbyteArray`的内容,然后调用Java静态方法传递转换后的数组。

2790

被折叠的 条评论
为什么被折叠?



