Передача байта [] в Java к функции в C через JNI: как использовать jarraybyte

Это - первый раз, когда я использую JNI и также в первый раз, когда я должен записать некоторые строки в C.

То, что я пытаюсь сделать, очень просто. Я просто пытаюсь переключить порядок байтов байта [] использование стандартной программы C.

В Java это сделано как это:

public void switchEndianness(byte[] array){

        byte byte1;
        byte byte2;

        for(int i = 0; i < array.length ; i+=2){
            byte1 = array[i];
            byte2 = array[i+1];

            array[i] = byte2;
            array[i+1] = byte1;
        }
}

Таким образом, чтобы сделать это использование JNI, я попытался реализовать ту же стандартную программу в JNICALL, но это не компилирует. Что я записал, до сих пор это:

JNIEXPORT void JNICALL Java_CEndianness_switchEndianness(JNIEnv *env, jobject obj, jbyteArray array, jint offset, jint length){

    char byte1;
    char byte2;

    int i;
    for(i = offset; i  < length ; i+=2){
        byte1 = array[i];
        byte2 = array[i+1];

        array[i] = byte2;
        array[i+1] = byte1;
    }
}

У меня нет подсказки, как использовать jbyteArray тип данных. действительно ли возможно сохранить jbyte в символе??? Другой вопрос.. когда эта стандартная программа будет закончена... будет байт [] в Java быть измененным?? Или это только изменяется в вызове C?

Какая-либо справка???

Благодаря всем!

32
задан blutech 6 August 2010 в 05:50
поделиться