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);
}
目录
相关文章
|
4月前
|
存储 Java Windows
java基础(9)数据类型中的char类型以及涉及到的转义字符
Java中的char类型可以存储一个中文字符,因为它占用两个字节。转义字符允许在代码中使用特殊字符,例如`\n`表示换行,`\t`表示制表符,`\\`表示反斜杠,`\'`表示单引号,`\"`表示双引号。可以使用`\u`后跟Unicode编码来表示特定的字符。
85 2
java基础(9)数据类型中的char类型以及涉及到的转义字符
|
7月前
|
Java API C++
Java JNI开发时常用数据类型与C++中数据类型转换
Java JNI开发时常用数据类型与C++中数据类型转换
250 0
|
4月前
|
安全 Java API
【性能与安全的双重飞跃】JDK 22外部函数与内存API:JNI的继任者,引领Java新潮流!
【9月更文挑战第7天】JDK 22外部函数与内存API的发布,标志着Java在性能与安全性方面实现了双重飞跃。作为JNI的继任者,这一新特性不仅简化了Java与本地代码的交互过程,还提升了程序的性能和安全性。我们有理由相信,在外部函数与内存API的引领下,Java将开启一个全新的编程时代,为开发者们带来更加高效、更加安全的编程体验。让我们共同期待Java在未来的辉煌成就!
78 11
|
4月前
|
安全 Java API
【本地与Java无缝对接】JDK 22外部函数和内存API:JNI终结者,性能与安全双提升!
【9月更文挑战第6天】JDK 22的外部函数和内存API无疑是Java编程语言发展史上的一个重要里程碑。它不仅解决了JNI的诸多局限和挑战,还为Java与本地代码的互操作提供了更加高效、安全和简洁的解决方案。随着FFM API的逐渐成熟和完善,我们有理由相信,Java将在更多领域展现出其强大的生命力和竞争力。让我们共同期待Java编程新纪元的到来!
126 11
|
5月前
|
开发框架 Java Android开发
JNI中调用Java函数
JNI中调用Java函数
32 0
|
5月前
|
开发框架 Java Android开发
JNI中调用Java函数
JNI中调用Java函数
39 0
|
5月前
|
算法 Java Linux
Intellij Java JNI 调用 C++
Intellij Java JNI 调用 C++
44 0
|
7月前
|
Java API Android开发
Java通过JNI调用C++的DLL库
Java通过JNI调用C++的DLL库
43 0