JAVA/JNI的jstring转换为char*
Posted 柳鲲鹏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA/JNI的jstring转换为char*相关的知识,希望对你有一定的参考价值。
具体代码:
#define CHARSET_UTF8 "utf8"
static jclass jClassString = NULL;
void jstringToBuffer(JNIEnv* pEnv, jstring jresult, char** ppBuffer)
{
if (jClassString == NULL)
{
jClassString = pEnv->FindClass("java/lang/String");
}
jmethodID jmethod = pEnv->GetMethodID(jClassString, "getBytes", "(Ljava/lang/String;)[B");
jbyteArray jarr = (jbyteArray)pEnv->CallObjectMethod(jresult, jmethod, pEnv->NewStringUTF(CHARSET_UTF8));
jsize jlen = pEnv->GetArrayLength(jarr);
jbyte* jdata = pEnv->GetByteArrayElements(jarr, JNI_FALSE);
if (*ppBuffer == NULL)
{
*ppBuffer = (char*)malloc((int)jlen+1);
memset(*ppBuffer, 0, (int)jlen +1);
}
strncpy(*ppBuffer, (char*)jdata, (int)jlen);
pEnv->ReleaseByteArrayElements(jarr, jdata, 0);
}
以上是关于JAVA/JNI的jstring转换为char*的主要内容,如果未能解决你的问题,请参考以下文章
我的Android进阶之旅NDK开发之C++如何相互转换jstring和char*