Java: Русские буквы и не только…
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: диплом купить, реферат мыло
| Добавил(а) на сайт: Сила.
Предыдущая страница реферата | 15 16 17 18 19 20 21 22 23 24 25 | Следующая страница реферата
...
jbyteArray getStringBytes(JNIEnv *env, jstring str)
{
if( !str ) return NULL;
jmethodID getBytes = env->GetMethodID(env->GetObjectClass(str),"getBytes","()[B");
jbyteArray buf = (jbyteArray)env->CallObjectMethod(str,getBytes);
if( !buf ) return NULL;
// Добавляем ноль-символ
jsize len = env->GetArrayLength(buf);
jbyteArray nbuf = env->NewByteArray(len+1);
if( len!=0 )
{
jbyte *cbuf = env->GetByteArrayElements(buf,NULL);
env->SetByteArrayRegion(nbuf,0,len,cbuf);
env->ReleaseByteArrayElements(buf,cbuf,JNI_ABORT);
}
env->DeleteLocalRef(buf);
return nbuf;
}
JNIEXPORT jint JNICALL Java_Test_nAction
(JNIEnv *env, jobject obj, jstring msg)
{
jbyteArray bmsg = getStringBytes(env,msg);
if( !bmsg ) return -1;
jbyte *cmsg = env->GetByteArrayElements(bmsg,NULL);
printf(cmsg);
jint res = do_something(cmsg);
env->ReleaseByteArrayElements(bmsg,cmsg,JNI_ABORT);
return res;
}
jstring newString(JNIEnv *env, jbyteArray jbuf, int len)
{
jclass stringClass = env->FindClass("java/lang/String");
if( !stringClass ) return NULL;
jmethodID init = env->GetMethodID(stringClass,"","([BII)V");
if( !init ) return NULL;
return (jstring)env->NewObject(stringClass,init,jbuf,0,len);
}
jstring newString(JNIEnv *env, const char *buf)
{
if( !buf ) return NULL;
int bufLen = strlen(buf);
if( bufLen==0 )
{
return env->NewString( (const jchar *)L"", 0 );
}
jbyteArray jbuf = env->NewByteArray(bufLen);
if( !jbuf ) return NULL;
env->SetByteArrayRegion(jbuf,0,bufLen,(jbyte*)buf);
Рекомендуем скачать другие рефераты по теме: курсовые работы, реферат государственный.
Категории:
Предыдущая страница реферата | 15 16 17 18 19 20 21 22 23 24 25 | Следующая страница реферата