0

画像データを参照するc++からjavaに渡された長いポインターがあります。今、Javaでこのポインターから配列を取得したいのですが、これを行うにはどうすればよいですか。

このコードを試しましたが、ptrに_pointerを参照させる方法がわかりません

long _pointer=Image.GetCptr();
com.sun.jna.Pointer ptr = new com.sun.jna.Memory(2 * 512 * 512);
short testarr[] = new short [512 * 512];
ptr.read(_pointer, testarr, 0, testarr.length);
4

1 に答える 1

1

jna.java.net Documentation read 関数によると、次のパラメータがあります。

public void read(long offset,
             byte[] buf,
             int index,
             int length)

Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.

Parameters:
    offset - byte offset from pointer into which data is copied
    buf - byte array into which data is copied
    index - array index from which to start copying
    length - number of elements from native pointer that must be copied
  1. ご覧のとおり、最初のパラメーターはbyte offset from the pointer data is copiedです。あなたの場合は0です。
  2. 2 番目のパラメータはbyte array the data is copied. あなたの場合、実際の画像データを指すポインター、または _pointer.
  3. 3 番目のパラメーターはarray index in destination、再び 0 になります。
  4. コピーする4番目のパラメーターのバイト数は、2 * 512 * 512のようです。

これがお役に立てば幸いです。

于 2013-01-06T07:40:49.790 に答える