2

アンマネージ ポインターがあり、指定されたバイト数をその場所から Byte 配列に転送したい場合、これを行う最善の方法は何ですか?

つまり、Marshal.PtrToString* メソッドと同等のものですが、宛先は Byte() です。

ありがとう

4

2 に答える 2

2

Marshal.Copyポインターとの間でバイト配列をコピーするためのオーバーロードがあります。

VB6Byte()スタイルの COM との相互運用性はありますか? OLE-COM ビューアー (VS と共にインストールされた Windows SDK ツールに含まれています) を使用して基になる COM 型をチェックし、VB で作成された dll を開いて、その typelib の内容を確認する必要があるのはなぜですか。

于 2009-02-25T12:06:41.767 に答える
0

次のコードを試してください

public static byte[] PtrToByteArray(IntPtr ptr, int len) {
  var array = new byte[len];
  for ( int i = 0; i < len; i++ ) { 
    array[i] = (byte)Marshal.PtrToStructure(ptr, typeof(byte));
    ptr = new IntPtr(ptr.ToInt64()+IntPtr.Size);
  }
}
于 2009-02-25T12:10:01.557 に答える