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方法
return 1;
}
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; } |