[英]C# - Convert unsafe byte* to byte[]
我有一个unsafe
byte*
指向已知长度的本机字节数组。 如何将其转换为byte[]
?
指向零终止本机字符串的unsafe
sbyte*
可以很容易地转换为C# string
,因为有一个转换构造函数用于此目的,但我找不到将byte*
转换为byte[]
的简单方法。
如果ptr
是你的不安全指针,并且数组的长度为len
,你可以像这样使用Marshal.Copy
:
byte[] arr = new byte[len];
Marshal.Copy((IntPtr)ptr, arr, 0, len);
但我确实想知道你是如何通过一个不安全的指向本机内存的。 你真的需要不安全吗,或者你能用IntPtr
而不是不安全的指针解决问题吗? 如果是这样,那么根本不需要不安全的代码。
元帅班可以帮助你。
byte[] bytes = new byte[length];
for(int i = 0; i < length; ++i)
bytes[i] = Marshal.ReadByte(yourPtr, i);
我想你也可以使用Marshal.Copy。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.