旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【C#】byte*をbyte[]に変換する

C++のDLLからJPEGエンコードされた画像データ(型はunsinged charのポインタ)が送られてくるので、それをC#側でbyteポインタで受け取りbyte[]に変換後、OpenCvSharpのMatに変換したかった話です。byteポインタをbyte配列に変換するにはMarshal.Copyを利用すると簡単とのことでした。

// byte*のサイズはlenと知っているものとする
byte[] arr = new byte[len];
// ptrがbyte*
Marshal.Copy((IntPtr)ptr, arr, 0, len);


stackoverflow.com