`
jinyanhui2008
  • 浏览: 312225 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

jstring 和char* 之间的转换方法

JNI 
阅读更多
//jstring to char* 
char* jstringTostring(JNIEnv* env, jstring jstr) 
{ 
       char* rtn = NULL; 
       jclass clsstring = env->FindClass("java/lang/String"); 
       jstring strencode = env->NewStringUTF("utf-8"); 
       jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B"); 
       jbyteArray barr= (jbyteArray)env->CallObjectMethod(jstr, mid, strencode); 
       jsize alen = env->GetArrayLength(barr); 
       jbyte* ba = env->GetByteArrayElements(barr, JNI_FALSE); 
       if (alen > 0) 
       { 
                 rtn = (char*)malloc(alen + 1); 
                 memcpy(rtn, ba, alen); 
                 rtn[alen] = 0; 
       } 
       env->ReleaseByteArrayElements(barr, ba, 0); 
       return rtn; 
} 

//char* to jstring 
jstring stoJstring(JNIEnv* env, const char* pat) 
{ 
       jclass strClass = env->FindClass("Ljava/lang/String;"); 
       jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V"); 
       jbyteArray bytes = env->NewByteArray(strlen(pat)); 
       env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*)pat); 
       jstring encoding = env->NewStringUTF("utf-8"); 
       return (jstring)env->NewObject(strClass, ctorID, bytes, encoding); 
} 

 

分享到:
评论

相关推荐

    char *转 jstring

    C++调用java java调用C++ 字符串参数传递 类型的转换

    JNI文档资料源码_2020_01_28_2.zip

    【Android NDK 开发】JNI 方法解析 ( 字符串数组参数传递 | 字符串遍历 | 类型强转 | Java 字符串与 C 字符串转换 | 字符串释放 ) ... 字符串转换 ( jstring -&gt; char* ) VI . 字符串释放 VII . 部分代码示例

    ffmpeg编译的android可用的so文件,多个版本

    jstring string=(*env)-&gt;GetObjectArrayElement(env,cmdline,i); const char* tmp=(*env)-&gt;GetStringUTFChars(env,string,0); argv[i]=(char*)malloc(sizeof(char)*1024); strcpy(argv[i],tmp); } ffmpeg...

    android jni jstring

    这是我写的android jni jstring的demo,共享一下

    魔兽1.24E内置字符串转换函数 以及 查找方法

    将魔兽内的字符串类型,字符串索引以及C的char类型 相互转换,和怎样查找这些关键call!!

    jni学习例子 在linux下执行成功

    jni学习例子 在linux下java调用so执行成功 java类型转成c类型 jstring 转char 相应的.so跟c跟.h跟点lib*.so都有,可以直接运行的

    JNI接口开发

    java调用native方法流程主要有两...String 转换为jstring类型;其他内置类型及自定义类型全部转换为jobject; 一般情况下,java调用native方法会比正常的函数调用效率低一个数量级,参数越多越复杂,对效率的影响越大。

    Android powermanger wakelock

    static void acquireWakeLock(JNIEnv *env, jobject clazz, jint lock, jstring idObj) { ************** const char *id = env-&gt;GetStringUTFChars(idObj, NULL); acquire_wake_lock(lock, id); env-&gt;...

    jni使用string相互调用

    jni使用string相互调用 Java 传递 String 给C C 传递 jstring 给 Java

    jstring-开源

    Java 多资源包

    jswoof-v1-07 当前最快的Flex解释Json的工具

    JSwoof是一个当前Flex解释Json最快的工具,是Flex下的包,即当你做Flex+Java的开时,你可以利用JSwoof这个工具包很好地在Java Json格式的数据与Flex中的对象相互转换。 比如JSwoof中的JParser.decode()方法: ...

    Registry.dll

    修改registry的两个方法,用来解决registry不能操作中文路径的问题.一个接受jstring转换为本地字符,另一个方法接收本地字符,返回一个jstring.

    错误Amr文件修复

    将错误的amr文件修复后并保存。部分代码。 /* DO NOT EDIT THIS FILE - it is machine generated */ #include ... (JNIEnv *env, jobject jot, jstring _path); #ifdef __cplusplus } #endif #endif

    《深度理解Android:第一卷》

    2.4.2 数据类型转换 / 22 2.4.3 JNIEnv介绍 / 24 2.4.4 通过JNIEnv操作jobject / 25 2.4.5 jstring介绍 / 27 2.4.6 JNI类型签名介绍 / 28 2.4.7 垃圾回收 / 29 2.4.8 JNI中的异常处理 / 32 2.5 本章小结 / ...

    android jni使用字符串

    这是我写的jni jstring的demo,共享一下。

    Emoji表情在Android JNI中的兼容性问题详解

    最终确认这是在Android 5.1以下 jstring -&gt; char数组 时出的问题。下面通过一个示例来还原这个过程。 事件还原 假设有一个字符串s,String s = \uD83D\uDC8B; ,对应表情:kiss_mark:。通过调用getBytes()方法,会...

    Android jni 线程同步

    文章目录概述问题示例c++层java层结果解决办法java层加锁c++层加锁java层和c++层共用一个锁 ...提供两个native方法,分别是add和get int i = 0; extern C JNIEXPORT jstring JNICALL Java_com_spear

    open-url-in-qt-android:迷你概念证明示例,如何通过单击链接在Android上启动QT应用程序

    在Qt Android中打开网址 示例实现示例,以演示如何通过单击具有特定架构的链接( pocintent:// )来在Android上启动QT应用程序。 重要的部分是: poc.intent.OpenUrlClient扩展了QtActivity ... const char

    C++中extern "C"的用法

    主要介绍了C++中extern "C"的用法,是深入理解C++所应该掌握的概念,需要的朋友可以参考下

    深入理解Android:卷I--详细书签版

     全书共10章,第1章介绍了阅读本书所需要做的准备工作,主要包括对android系统架构和源码阅读方法的介绍;第2章通过对android系统中的mediascanner进行分析,详细讲解了 android中十分重要的jni技术;第3章分析了...

Global site tag (gtag.js) - Google Analytics