实现java的String类转换为C中的char*数组

JNI开发中,java与c代码交互的时候通常有String和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;}

未曾失败的人恐怕也未曾成功过。

实现java的String类转换为C中的char*数组

相关文章:

你感兴趣的文章:

标签云: