您的位置:首页 > Web前端 > JavaScript

ndk jstring 与cha*相互转换

2016-03-27 16:57 597 查看
char* Jstring2CStr(JNIEnv* env,jstring jstr)

{

char* rtn = NULL;

jclass clsstring = env->FindClass("java/lang/String");

jstring strencode = env->NewStringUTF("GB2312");//转换成Cstring的GB2312,兼容ISO8859-1

jmethodID mid = env->GetMethodID(clsstring,"getBytes","(Ljava/lang/String;)[B");

jbyteArray barr= (jbyteArray) env->CallObjectMethod(jstr,mid,strencode); //String.getByte("GB2312");

jsize alen = env->GetArrayLength(barr);

jbyte* ba = env->GetByteArrayElements(barr,JNI_FALSE);

if(alen > 0)

{

rtn = (char*)malloc(alen+1);

memcpy(rtn,ba,alen);

rtn[alen]=0; //"\0"

}

env->ReleaseByteArrayElements(barr,ba,0);

return rtn;

}

jstring CStr2Jstring( JNIEnv* env, const char* pat)

{

jclass strClass = env->FindClass("Ljava/lang/String;");

jmethodID mID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");

jbyteArray bytes = env->NewByteArray((jsize)strlen(pat));

env->SetByteArrayRegion(bytes, 0, (jsize)strlen(pat), (jbyte*)pat); //将char* 转换为byte数组

jstring encoding = env->NewStringUTF("GB2312");

return (jstring)env->NewObject(strClass, mID, bytes, encoding);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: