62,614
社区成员
发帖
与我相关
我的任务
分享
#define CHECK_EXCEPTION if((*env)->ExceptionCheck(env) == JNI_TRUE) return
int GetMyID(char *myid)
{
char* arr = "098abc";
while (*arr)
{
*(myid++) = *(arr++);
}
*myid = 0;
}
JNIEXPORT jint JNICALL Java_JNITest_GetMyID
(JNIEnv *env, jobject this, jobject buff)
{
JNIEnv _env = *env;
jint len = _env->GetArrayLength(env, buff);
CHECK_EXCEPTION 0;
jbyte p[len];
int r = GetMyID(p);
if (!r)
{
_env->SetByteArrayRegion(env, buff, 0, len, p);
CHECK_EXCEPTION 0;
}
return r;
}
public native int GetMyID(byte[] buff);
public static void main(String[] args) throws Exception {
JNITest t = new JNITest();
byte[] buff = new byte[1000];
if (t.GetMyID(buff) == 0) {
String str = null;
for (int i = 0; i < buff.length; i++) {
if (buff[i] == 0) {
str = new String(buff, 0, i);
break;
}
}
System.out.println(str);
}
}
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);
}