// 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 stringTojstring(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);
}
?
详细解决方案
jstring, char* 转换函数
热度:683 发布时间:2012-07-08 17:43:43.0
相关解决方案
- 形参类型是 int ,按理只能接受 数值 或 char ,为什么下面传和个 String 也行?解决办法
- JNI char*转jstring乱码有关问题
- 怎么使用JAVA调用C++编写的Dll函数,Char *指针
- char character的差异
- 如何把unsigned char[]插入数据库
- 一个关于“不能将参数 1 从“char [80]”转换为“System:Object ^”的有关问题
- 托管代码数据怎么转非托管数据?array<Byte> 怎样转为 char *
- vc++.net中的有关问题( error C2440: 'type cast' : cannot convert from 'CString' to 'const char *')
- 请问,报不能将“const char [7]”转换为“LPCTSTR”
- main(int, char* argv[]) 跟 main(int, wchar* argv[])
- 如何才能把char * 类型的数据转换成unsigned char _gc[]
- La conversión del tipo de datos char a smalldatetime generó un valor smalldateti,该如何解决
- The conversion of a char data type to a datetime data type resulted in an out-of-range datetime解决方案
- 与“string.Split(params char[])”最匹配的重载方法具有一些无效参数,该怎么解决
- char[] aaa = ""ToCharArray;为什么报错?想用""来分割一个字符串如何做
- char *转换为TDes, TDesC啊解决方法
- 假如在文件aaa.c中定义了 extern char sender[]={0xAA,0xBB,0xCC};而在文件bbb.c要引用sender[]。貌似在bbb解决办法
- 假若在文件aaa.c中定义了 extern char sender[]={0xAA,0xBB,0xCC};而在文件bbb.c要引用sender[]。貌似在bbb
- C++中的char*b=new char[10];在反汇编里的代码如上,麻烦大神来帮忙解释上反汇编代码中的意思
- char* instIdList[] = {"rb1305""m1309"}; 如何判断里面有几个字符串
- char 型和int详解?
- [求助]char a []="CHINA"
- 谁能教下FAR CHAR * 和CHAR * 有什么区别??
- [讨论]char* a = "abc" 和 char a[] = "abc" 之间的区别 ...
- 关于int main(int argc, char *argv[])的问题
- [求助]int 和 char 的问题
- main(int argc,char *argv[]) 本身的参数在哪里
- jstring, char* 转换函数
- char a='\0';该怎么解决
- hibernate3 char(n)数据类型照射