您当前的位置: 首页 >  柳鲲鹏 Java

JAVA/JNI的jstring转换为char*

柳鲲鹏 发布时间:2021-07-15 10:23:03 ,浏览量:0

具体代码:

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

}

关注
打赏
1688896170
查看更多评论

柳鲲鹏

暂无认证

  • 0浏览

    0关注

    4641博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0718s