2011-01-06 103 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 *緩衝區來設置它的指定區域。

請閱讀文檔。