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)!
老人花光一生积蓄买保健品,错失雄安买房绝好机会!