簡體   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