IntPtrをbyte配列に変換/byte配列をIntPtrに変換

C#でCのDLLでデータのやりとりをしたいときにIntPtrを使う場面が多々あります。

IntPtrの変換方法をまとめたので参考にしてください。

byte配列からIntPtrへの変換

byte[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

int size = Marshal.SizeOf(array[0]) * array.Length;
IntPtr intPtr = Marshal.AllocHGlobal(size);

Marshal.Copy(array, 0, intPtr, size);

IntPtrからbyte配列への変換

var arrary2 = new byte[array.Length];

Marshal.Copy(intPtr, arrary2, 0, arrary2.Length);

どちらもMarshal.Copyを使用することで簡単に実現可能でした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA