Это - первый раз, когда я использую 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?
Какая-либо справка???
Благодаря всем!