gpt4 book ai didi

android - 将 java 中的 byte[] 转换为 C++ 中的 unsigned char* 的正确方法,反之亦然?

转载 作者:IT老高 更新时间:2023-10-28 12:49:54 29 4
gpt4 key购买 nike

我是 C++ 和 JNI 的新手,我尝试找到一种正确的方法,使用 JNI 将 java 中的 byte[] 转换为 C++ 中的 unsigned char*,反之亦然! (我正在研究安卓)在 google 和 SO 中寻找解决方案后,我还没有找到将 java 中的 byte[] 转换为 C++ 的好方法。请帮助我,并为反之提供解决方案(C++ 中的 unsigned char* 到 java 中的 byte[])。非常感谢

  • java 中的 byte[] 到 C++ 中的 unsigned char*:

JAVA:

private static native void nativeReceiveDataFromServer(byte[] value, int length);

JNI:

... (JNIEnv* env, jobject thiz, jbyteArray array, jint array_length)
{
???
}

PS:我修改了我的问题,因为我的问题是一个真正的问题:(

最佳答案

您可以使用它来将 unsigned char 数组转换为 jbyteArray

jbyteArray as_byte_array(unsigned char* buf, int len) {
jbyteArray array = env->NewByteArray (len);
env->SetByteArrayRegion (array, 0, len, reinterpret_cast<jbyte*>(buf));
return array;
}

反过来换...

unsigned char* as_unsigned_char_array(jbyteArray array) {
int len = env->GetArrayLength (array);
unsigned char* buf = new unsigned char[len];
env->GetByteArrayRegion (array, 0, len, reinterpret_cast<jbyte*>(buf));
return buf;
}

关于android - 将 java 中的 byte[] 转换为 C++ 中的 unsigned char* 的正确方法,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16667029/

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