转换字节[]在Java中的无符号的char *在C ++中,反之亦然正确的方法是什么? [英] A correct way to convert byte[] in java to unsigned char* in C++, and vice versa?

查看:406
本文介绍了转换字节[]在Java中的无符号的char *在C ++中,反之亦然正确的方法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新手C ++和JNI,我试图找到在Java字节[]转换为无符号的char *在C ++中使用JNI一个正确的方法,反之亦然! (我工作的机器人) 经过寻找在谷歌的解决方案和SO,我还没有找到一个很好的细节的方式转换成字节[]在Java和C ++。请帮助我,并提供一个相反的解决方案(无符号字符* C ++中为byte []在Java)。非常感谢

I'm newbie in C++ and JNI, I try to find a correct way to convert byte[] in java to unsigned char* in C++ by using JNI, and vice versa ! (I'm working on android) After looking for a solution in google and SO, I haven't found a good details way to convert byte[] in java to C++. Please help me, and provide a solution for a vice versa (unsigned char* in C++ to byte[] in java). Thanks very much

  • 字节[]在Java中的无符号的char *在C:

JAVA:

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

JNI:

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

PS:我修改我的问题的是我的问题一个真正的问题:(

PS: I modified my question for being a real question for my problem :(

推荐答案

您可以使用此转换无符号的字符阵列成 jbyteArray

You can use this to convert unsigned char array into a 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;
}

到周围的其他方法转换...

to convert the other way around...

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;
}

这篇关于转换字节[]在Java中的无符号的char *在C ++中,反之亦然正确的方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆