Konvertieren von jbyteArray in ein Zeichenarray und anschließendes Drucken in die Konsole
Ich schreibe ein JNI-Programm, in dem meine .cpp-Datei ein jbyteArray erhält, und ich möchte das jbyteArray mit printf drucken können. Dazu muss ich das jbyteArray in ein Zeichenarray konvertieren.
Für Hintergrundwissen konvertiert die Java-Seite meines JNI einen String in ein byteArray, und dieses byteArray wird dann als Argument an meine JNI-Funktion übergeben.
Was ich bisher gemacht habe, druckt den String korrekt aus, aber es folgen Junk-Zeichen, und ich weiß nicht, wie ich diese loswerden soll / wenn ich etwas falsch mache.
Das ist der String:
dsa
und was druckt auf Konsole:
dsa,�
Die Junk-Zeichen ändern sich abhängig von der Zeichenfolge. Hier ist der Teil des Codes, der relevant ist:
.java-Datei:
public class tcr extends javax.swing.JFrame{
static{
System.loadLibrary("tcr");
}
public native int print(byte file1[]);
.....
String filex1 = data1TextField.getText();//gets a filepath in the form of a String from a GUI jtextfield.
byte file1[]= filex1.getBytes();//convert file path from string to byte array
tcr t = new tcr();
t.print(file1);
}
CPP-Code:
JNIEXPORT jint JNICALL Java_tcr_print(JNIIEnv *env, jobject thisobj, jbyteArray file1){
jboolean isCopy;
jbyte* a = env->GetByteArrayElements(file1,&isCopy);
char* b;
b = (char*)a;
printf("%s\n",b);
}
Jede Hilfe wäre dankbar.