2011-01-06 36 views
2

我正在处理一个C++库,它将图像字节数据存储在一个无符号字符数组中。我的jni函数返回一个jByteArray(然后转换为Java端的BufferedImage),但我不知道如何从无符号字符数组中填充jByteArray(如果可能的话)。任何人都可以进行这最后一部分,基本上做到这一点提供了一个片段:JNI无符号字符到字节数组

// 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? 

感谢, 杰夫

回答

2

下面是应该指向你在正确的方向的一个片段。

jboolean isCopy; 
void *data = env->GetPrimitiveArrayCritical((jarray)bArray, &isCopy); 

memcpy(data, buf, bytecount); 

// and don't forget the 'release' 
+0

我在这里有点困惑。复制原始的unsigned char数组(不是jarray)在哪里发生? – 2011-01-06 01:57:07

+0

请参阅编辑后的版本。 – bmargulies 2011-01-06 01:58:51

+0

谢谢。感谢帮助。 – 2011-01-06 02:49:28

0

用户jbyte的*代替无符号字符*

在JNI甲jbyte被定义为一个符号字符。 JNI为此提供了几个函数:您可以创建一个新的jbyteArray,并且给定一个jbyte *缓冲区来设置它的指定区域。

请阅读文档。

相关问题