gpt4 book ai didi

android - 如何在数组中设置jbyte的值

转载 作者:行者123 更新时间:2023-11-28 05:15:39 24 4
gpt4 key购买 nike

我尝试使用 jbyte 但出现错误:

 Error:(12, 19) error: no viable overloaded '='.

这是我的代码:

jint len = env->GetArrayLength(s);
jbyteArray result = (env)->NewByteArray(len);
jbyte *element = env->GetByteArrayElements(s,false);
for (int i=0; i < len; i++) {
if(env->ExceptionOccurred()) {
break;
}
result[i] = *(element+i);
}

怎么了?

最佳答案

你不能像那样写入一个jbyteArray。您需要使用 GetByteArrayElements 获取指向底层数组的指针。然后在完成该数组后使用 ReleaseByteArrayElements

jbyte *result_bytes = env->GetByteArrayElements(result, NULL);
....
result_bytes[i] = *(element+i);
...
// 0 = copy back the modified data if necessary
env->ReleaseByteArrayElements(result, result_bytes, 0);

参见 http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html


顺便说一句:GetByteArrayElements 的第二个参数是一个jboolean*,所以GetByteArrayElements(s,false) 应该是 GetByteArrayElements(s, NULL)
当你使用完 element 时,你需要调用 ReleaseByteArrayElements

关于android - 如何在数组中设置jbyte的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42732292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com