我有一個方法,它需要一個類型並將其轉換爲一個字節數組。但由於某些原因,字節數組結果在每個索引中總是以0結尾。元數據複製結構到字節數組出現爲0爲每個字節
我不知道爲什麼會發生這種情況,我傳遞了自己的結構,它具有值集,我正在檢查它,所以我不應該爲每個索引獲得0。
這是我的方法轉換爲字節數組:
public static bool TryGetBytes<T>(T obj, ref byte[] arr)
{
int size = Marshal.SizeOf(obj);
if (size > arr.Length)
{
Debug.Log("Size error!" + size + " : "+arr.Length);
return false;
}
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(obj, ptr, true);
Marshal.Copy(ptr, arr, size, 0);
Marshal.FreeHGlobal(ptr);
return true;
}
有什麼我可能是錯在這裏做什麼?我需要ref
嗎?我嘗試沒有ref
,並沒有發生任何差異。所以我有點困惑如何讓這個工作。
你一定需要'ref',否則你在你的函數裏面做的工作在arr上的東西將在本地副本上工作並且不會導致在函數完成後的任何更改中。 –
好的,謝謝澄清那部分:)我認爲可能是這種情況。 – Sir
不應該是 - Marshal.Copy(ptr,arr,0,size)...? – MineR