jstring 和char* 之間的轉換方法
原文:https://qdjinxin.iteye.com/blog/390973
//jstring to char*
char* jstringTostring(JNIEnv* env, jstring jstr)
{
char* rtn = NULL;
jclass clsstring = env->FindClass("java/lang/String");
jstring strencode = env->NewStringUTF("utf-8");
jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B");
jbyteArray barr= (jbyteArray)env->CallObjectMethod(jstr, mid, strencode);
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;
}
env->ReleaseByteArrayElements(barr, ba, 0);
return rtn;
}
//char* to jstring
jstring stoJstring(JNIEnv* env, const char* pat)
{
//jclass strClass = env->FindClass("Ljava/lang/String;");
jclass strClass = env->FindClass("java/lang/String");
jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
jbyteArray bytes = env->NewByteArray(strlen(pat));
env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*)pat);
jstring encoding = env->NewStringUTF("utf-8");
return (jstring)env->NewObject(strClass, ctorID, bytes, encoding);
}
注:
如果是c程序,要用 (*env)->
如果是C++要用 env->
C++中使用
env->FindClass("java/lang/String")
C中使用
(*env)->FindClass(env, "java/lang/String")
最後更新:2017-04-02 06:52:01
上一篇:
將點分式的IP地址轉換成長整型
下一篇:
Magento -- 分享支持Magento1.6的示例數據包
選擇H5響應式自助建站,我不曾後悔!
??????????????????????????????????????????????????????????????????????????????????????-??????-????????????-?????????
數據中心機房空調機組的設置與配置
各大網站收錄入口| 各大搜索引擎提交 | 搜索引擎提交地址
Oracle Greatest()函數
互聯網企業做手機“不接地氣”
為jframe窗口設置背景圖片
關於RichTextBox字體的問題
java.security.MessageDigest的使用(1)!
老人花光一生積蓄買保健品,錯失雄安買房絕好機會!