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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage