阅读 113

jni的jstring转为char指针和jni中使用logcat

  • jni的jstring转为char指针

    #include 
    #include 
    #include 
    #define LOG_TAG "System.out"
    #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
    /**
     * 把一个jstring转换成一个c语言的char* 类型.
     */
    char* _JString2CStr(JNIEnv* env, jstring jstr) {
          char* rtn = NULL;
          jclass clsstring = (*env)->FindClass(env, "java/lang/String");
          jstring strencode = (*env)->NewStringUTF(env,"GB2312");
          jmethodID mid = (*env)->GetMethodID(env, clsstring, "getBytes", "(Ljava/lang/String;)[B");
          jbyteArray barr = (jbyteArray)(*env)->CallObjectMethod(env, jstr, mid, strencode); // String .getByte("GB2312");
          jsize alen = (*env)->GetArrayLength(env, barr);
          jbyte* ba = (*env)->GetByteArrayElements(env, barr, JNI_FALSE);
          if(alen > 0) {
                rtn = (char*)malloc(alen+1); //"\0"
                memcpy(rtn, ba, alen);
                rtn[alen]=0;
          }
          (*env)->ReleaseByteArrayElements(env, barr, ba,0);
          return rtn;
    }

原文:https://www.cnblogs.com/xiaobai-baibaoxiang/p/14850978.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐