C#-将不安全的字节*转换为字节[]
本文关键字:字节 转换 不安全 C#- | 更新日期: 2023-09-27 18:21:44
我有一个指向已知长度的本机字节数组的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);
但我确实想知道你是如何找到一个不安全的指向本地内存的指针的。你真的需要这里的unsafe吗?或者你能用IntPtr
代替unsafe指针来解决问题吗?如果是这样的话,那么可能根本不需要不安全的代码。
Marshal类可以帮助您。
byte[] bytes = new byte[length];
for(int i = 0; i < length; ++i)
bytes[i] = Marshal.ReadByte(yourPtr, i);
我想你可以用元帅。也收到。