バイト配列のためのMarshal.PtrToString *メソッドに相当
-
06-09-2019 - |
質問
私は管理されていないポインタを持っていると私はバイト配列にその場所から指定したバイト数を転送したい場合は、
、これを行うための最善の方法は何ですか?
すなわち。何Marshal.PtrToString *メソッドと同等であるが、宛先がバイトである場合()
おかげ
解決
Marshal.Copy
ポインタから/へのコピーバイトアレイのオーバーロードがあります。
Byte()
によっては、VB6のスタイルのCOMとのこの相互運用でしょうか?あなたは、なぜそのタイプライブラリが言うことを見て、DLLを作成したVBを開くために(VSとともにインストールされたWindows SDKツールに含まれる)OLE-COMビューアを使用して基本的なCOMの種類を確認したい。
他のヒント
次のコードを試してみてください
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);
}
}
所属していません StackOverflow