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