繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM