所以我使用 SWIG 从一些 Java 代码中调用一些 C++ 代码。我正在调用的函数需要一个字符串和一个整数。问题是,字符串似乎在两种语言之间发生了变化:
爪哇:
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����
是什么赋予了?如何使两个字符串相同?
编辑:通过使用字节数组的 Base-64 编码解决。仍在使用 SWIG 与 Java 中的字符串和 C++ 中的字符串。