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)!
老人花光一生積蓄買保健品,錯失雄安買房絕好機會!