我有一个指向已知长度的本机字节数组的unsafe byte*。如何将其转换为byte[]?
指向以零结尾的原生字符串的unsafe sbyte*可以很容易地转换为C# string,因为有一个conversion constructor可用于此目的,但我找不到一种简单的方法将byte*转换为byte[]。
发布于 2013-07-10 19:31:47
如果ptr是您的不安全指针,并且数组的长度为len,则可以像这样使用Marshal.Copy:
byte[] arr = new byte[len];
Marshal.Copy((IntPtr)ptr, arr, 0, len);但是我想知道你是怎么把一个不安全的指针指向本机内存的。你真的需要不安全的地方吗?或者你能用IntPtr代替不安全的指针来解决这个问题吗?如果是这样,那么可能根本就不需要不安全的代码。
发布于 2013-07-10 19:32:33
Marshal类可以帮助您。
byte[] bytes = new byte[length];
for(int i = 0; i < length; ++i)
bytes[i] = Marshal.ReadByte(yourPtr, i);我想你也可以使用Marshal.Copy。
https://stackoverflow.com/questions/17569419
复制相似问题