0

そのため、SWIG を使用して、Java コードから C++ コードを呼び出しています。私が呼び出している関数は、文字列と整数を取ります。問題は、文字列が 2 つの言語間で異なるように見えることです。

ジャワ:

byte[] bytes = getBytesFromSomewhere();
String rv = new String(bytes, "ASCII");
logger.info(rv.substring(0,30));
f(rv, 10);

C++:

bool f(const string& data, const int num) {
  LOG(ERROR) << "Got string: " << data.substr(0,30);
}

そして、Javaからの私の出力は次のとおりです。

GIF89a�Z��

C++からの私の出力は次のとおりです。

GIF89a��Z����

何を与える?2 つの文字列を同じにする方法を教えてください。

編集: バイト配列の Base-64 エンコーディングを使用して解決しました。Java の文字列と C++ の文字列で SWIG を引き続き使用しています。

4

1 に答える 1