Poprawny sposób konwersji bajtu [] w Javie na unsigned char* w C++ i odwrotnie?

Jestem newbie w C++ i JNI, staram się znaleźć poprawny sposób na konwersję bajtu [] w Javie do unsigned char* w C++ za pomocą JNI i vice versa ! (Pracuję na Androidzie) Po szukaniu rozwiązania w google i tak, nie znalazłem dobrego sposobu, aby przekonwertować bajt [] w Javie do C++. Proszę o pomoc i dostarczenie rozwiązania dla odwrotnego (unsigned char* w C++ to byte [] w Javie). Dziękuję bardzo

  • bajt [] w Javie do unsigned char * w C++:

JAVA:

private static native void nativeReceiveDataFromServer(byte[] value, int length);

JNI:

... (JNIEnv* env, jobject thiz, jbyteArray array, jint array_length)
{
    ???
}

PS: zmodyfikowałem moje pytanie, aby było prawdziwym pytaniem dla mojego problemu: (

Author: Hien Nguyen, 2013-05-21

2 answers

Możesz użyć tego do konwersji unsigned char tablicy na jbyteArray

jbyteArray as_byte_array(unsigned char* buf, int len) {
    jbyteArray array = env->NewByteArray (len);
    env->SetByteArrayRegion (array, 0, len, reinterpret_cast<jbyte*>(buf));
    return array;
}

Aby konwertować na odwrót...

unsigned char* as_unsigned_char_array(jbyteArray array) {
    int len = env->GetArrayLength (array);
    unsigned char* buf = new unsigned char[len];
    env->GetByteArrayRegion (array, 0, len, reinterpret_cast<jbyte*>(buf));
    return buf;
}
 75
Author: Zharf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-21 10:44:25

Tablica buf jest zmienną na stosie. Po opuszczeniu funkcji ta zmienna jest niezdefiniowana.

Rozwiązaniem jest rozdzielenie tej funkcji na dwie, jedną do obliczenia rozmiaru, a drugą ze wskaźnikiem do przydzielonej tablicy jako parametru do wypełnienia wartości.

 -1
Author: Heiner Kücker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-04 16:50:43