2011-01-06 30 views
2

私は、画像バイトデータを符号なし文字の配列に格納するC++ライブラリを扱っています。私のjni関数はjByteArray(Java側でBufferedImageに変換されます)を返しますが、可能であれば、符号なし文字配列からjByteArrayを埋め込む方法がわかりません。誰もが基本的にこれを行うには、この最後の部分のためのスニペットを提供することができます:JNI unsigned charをバイト配列

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

ここで少し混乱します。オリジナルの符号なしchar配列(jarrayではなく)のコピーはどこで行われますか? –

+0

編集されたバージョンを参照してください。ありがとう。 – bmargulies

+0

ありがとうございます。ヘルプに感謝します。 –

0

jbyteがsigned char型であると定義されるJNIではなくunsigned char型のユーザjbyte *

。 JNIには、新しいjbyteArrayを作成し、指定された領域にjbyte *バッファを指定して を設定することができます。

こちらのドキュメントをお読みください。

関連する問題