我正在使用一个由几个 C 函数组成的 JNI 库。在 function1 中,我传递一个大小为 128 的字节数组,如下所示:
static byte[] byteAry = new byte[128];
long ret1 = MyLibrary.function1(byteAry);
在函数 2 中,我将 function1 返回的字节数组传递给进一步处理,如下所示。
final int ret2 = MyLibrary.function2(byteAry);
在 function2 的 C 代码中,我得到 byteAry 的长度如下:
jsize jsArruLen = (*env)->GetArrayLength(env,jDeviceListArr);
当我调用 function1 后跟 function2 时,jsArruLen 应该是 128,因为 bytearray 被创建为 128 个字节。
但是,当我手动将字符串复制到字节中,然后通过执行以下操作将其传递给 function2 时:
final String mystring = "this is a string";
byteAry = mystring.getBytes();
jsArruLen 的长度只有 16 个字节,这是 mystring 的长度。如何在不更改其大小的情况下手动将字符串复制到 byteAry 中?
谢谢。