我正在使用一个C ++库,它将图像字节数据存储在无符号字符数组中。我的jni函数返回一个jByteArray(然后在java端转换为BufferedImage),但我不确定如何从无符号字符数组填充jByteArray(如果可能的话)。任何人都可以为最后一部分提供基本上这样做的片段:
// size is the size of the unsigned char array
const int size = 100;
unsigned char* buf = new unsigned char[size];
// buf gets passed to another library here to be populated
jbyteArray bArray = env->NewByteArray(size);
// now how do I get the data from buf to bArray?
谢谢, 杰夫
答案 0 :(得分:2)
这是一个应该指向正确方向的片段。
jboolean isCopy;
void *data = env->GetPrimitiveArrayCritical((jarray)bArray, &isCopy);
memcpy(data, buf, bytecount);
// and don't forget the 'release'
答案 1 :(得分:0)
用户jbyte *而不是unsigned char *
在JNI中,jbyte被定义为签名字符。 JNI为此提供了一些功能:您可以创建一个新的jbyteArray和 在给定jbyte *缓冲区的情况下设置它的指定区域。
请阅读文档。