JAVA/JNI的jstring转换为char*

简介: 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);
}
目录
相关文章
|
9月前
|
Java Android开发
Android JNI开发从0到1,java调C,C调Java,保姆级教程详解
Android JNI开发从0到1,java调C,C调Java,保姆级教程详解
65 1
|
5月前
|
Java
【JAVA】为char所提供包装类——Character类
【JAVA】为char所提供包装类——Character类
76 0
|
7月前
|
存储 自然语言处理 Java
Java_9_为何要将_String_的底层实现由_char[]_改成了_byte[]_?
Java_9_为何要将_String_的底层实现由_char[]_改成了_byte[]_?
|
7月前
|
Java
【Java异常】ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 JDWP exit erro
【Java异常】ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 JDWP exit erro
90 0
|
9月前
|
存储 Java 数据安全/隐私保护
Java 最常见的面试题:char 和 varchar 的区别是什么?
Java 最常见的面试题:char 和 varchar 的区别是什么?
|
9月前
|
Java
Java中 String与基本数据类型,包装类,char[],byte[]之间的转换
Java中 String与基本数据类型,包装类,char[],byte[]之间的转换
57 0
|
10月前
|
存储 Java API
浅聊一下Java中的char类型
浅聊一下Java中的char类型
79 0
|
10月前
|
Java Android开发 C++
[Android JNI] --- 静态注册和动态注册实现java和native相互调用
[Android JNI] --- 静态注册和动态注册实现java和native相互调用
117 0
|
10月前
|
XML Java 编译器
[Android JNI] --- Java和Android简介
[Android JNI] --- Java和Android简介
83 1
|
8月前
|
存储 关系型数据库 MySQL
面试时被这样一个问:”存储MD5值应该用VARCHAR还是用CHAR?
一个5年工作经验的小伙伴,在面试的时候被这样一个问题。说”存储MD5值应该用VARCHAR还是用CHAR“,他一时间不只如何选择,感觉用VARCHAR也可以,用CHAR也行。希望我来帮忙分析一下。
71 0