0
点赞
收藏
分享

微信扫一扫

JAVA/JNI的jstring转换为char*

以沫的窝 2022-01-28 阅读 70


具体代码:

#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);

}


举报

相关推荐

0 条评论