C# - 将不安全的字节*转换为byte []

kol*_*kol 15 c# pinvoke

我有一个unsafe byte*指向已知长度的本机字节数组.我该怎么把它转换成byte[]?

一unsafe sbyte*到零结尾的本地字符串指针可以被转换成一个C#string容易,因为有一个转换构造函数用于此目的,但我不能找到一个简单的方法来转换byte*到byte[].

Dav*_*nan 19

如果ptr你是不安全的指针,并且数组有长度len,你可以Marshal.Copy像这样使用:

byte[] arr = new byte[len];
Marshal.Copy((IntPtr)ptr, arr, 0, len);
Run Code Online (Sandbox Code Playgroud)

但我确实想知道你是如何通过一个不安全的指向本机内存的.你真的需要不安全吗,或者你可以用IntPtr而不是不安全的指针解决问题吗?如果是这样,那么根本不需要不安全的代码.