NDK 编程:java中的jstring, 转化为c的一个字符数组
来源:互联网 发布:剑网3萝莉捏脸数据 编辑:程序博客网 时间:2024/05/02 00:25
#include <jni.h>
#include <string.h>
// java中的jstring, 转化为c的一个字符数组
char* Jstring2CStr(JNIEnv* env, jstring jstr){
char* rtn = NULL;
//获得java.lang.String类的一个实例
jclass clsstring = (*env)->FindClass(env,"java/lang/String");
//指定编码方式
jstring strencode = (*env)->NewStringUTF(env,"utf-8");//utf-16,GB2312
//获得方法 getBytes
jmethodID mid = (*env)->GetMethodID(env,clsstring, "getBytes", "(Ljava/lang/String;)[B");
//通过回调java中的getBytes方法将字符串jstr转换成uft-8编码的字节数组
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); //new char[alen+1]; "\0"
//将字符串ba复制到 rtn
memcpy(rtn,ba,alen);
rtn[alen]=0;
}
(*env)->ReleaseByteArrayElements(env,barr,ba,0); //释放内存
return rtn;
}
//返回Java字符串
JNIEXPORT jstring JNICALL Java_com_app_test_TestJNIActivity_appendStr
(JNIEnv * env, jobject obj, jstring str){
char* p = Jstring2CStr(env,str);
return (*env)->NewStringUTF(env,p);
}
#include <string.h>
// java中的jstring, 转化为c的一个字符数组
char* Jstring2CStr(JNIEnv* env, jstring jstr){
char* rtn = NULL;
//获得java.lang.String类的一个实例
jclass clsstring = (*env)->FindClass(env,"java/lang/String");
//指定编码方式
jstring strencode = (*env)->NewStringUTF(env,"utf-8");//utf-16,GB2312
//获得方法 getBytes
jmethodID mid = (*env)->GetMethodID(env,clsstring, "getBytes", "(Ljava/lang/String;)[B");
//通过回调java中的getBytes方法将字符串jstr转换成uft-8编码的字节数组
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); //new char[alen+1]; "\0"
//将字符串ba复制到 rtn
memcpy(rtn,ba,alen);
rtn[alen]=0;
}
(*env)->ReleaseByteArrayElements(env,barr,ba,0); //释放内存
return rtn;
}
//返回Java字符串
JNIEXPORT jstring JNICALL Java_com_app_test_TestJNIActivity_appendStr
(JNIEnv * env, jobject obj, jstring str){
char* p = Jstring2CStr(env,str);
return (*env)->NewStringUTF(env,p);
}
- NDK 编程:java中的jstring, 转化为c的一个字符数组
- android典型代码系列(十八)------把java中的jstring的类型转化成一个c语言中的char字符串
- java 字符串转化为字符数组的3种方法
- 强化练习9:将不定长的字符串转化为一个16位的字符数组
- 单片机C 浮点数转化为字符数组问题
- 数组转化为列表的一个陷阱
- 编写一个函数将字符串中的数字字符转化为相应的整数
- 将一个包含ASCII编码Unicode编码字符的Byte数组转化为一个完整的String
- Android JNI jint转化为jstring
- 6.1学习内容 ndk编程释放内存,C语言中char*添加字符得方法,java二维数组的读取与生成
- android ndk编程 jstring to char[]
- C和java中关于字符串与字符数组的定义和转化
- 多个数组转化为一个数组的方法
- 将一个数字转化为一个字符
- Java调用C++(包含jstring到const char*字符串转化) 及其c++调用java字符串传递
- C语言将整形转化为对应的字符型
- 将json字符串转化为json数组,以及转化为java中的集合
- 十六进制字符数组转化为十进制整数
- tcpdump使用说明
- 死锁监视器
- SQL网站转Acess[兼容].编程注意事项【待续】
- Spring-Bean的属性(1.单独定义BEAN,ID为之的BEAN参考之 2.在BEAN中直接定义参考的BEAN)
- 三身破瓦
- NDK 编程:java中的jstring, 转化为c的一个字符数组
- webview 与 javascript
- 金碟K/3生成凭证问题描述
- 《WPF揭秘》学习随笔 01
- vim 插件echofunc.vim 翻页问题
- Android通过JNI调用驱动程序(完全解析实例)
- 十年前 十年后 小小感慨一下
- java垃圾回收机制详解
- Linux之压缩与解压