我發現了兩種方法將byte[]
轉換爲結構。但我不知道這兩種方法是否有區別?誰能知道哪個更好(性能,...)?哪個編組方法比較好?
#1:
public static T ByteArrayToStructure<T>(byte[] buffer)
{
int length = buffer.Length;
IntPtr i = Marshal.AllocHGlobal(length);
Marshal.Copy(buffer, 0, i, length);
T result = (T)Marshal.PtrToStructure(i, typeof(T));
Marshal.FreeHGlobal(i);
return result;
}
#2:
public static T ByteArrayToStructure<T>(byte[] buffer)
{
GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
T result = (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(T));
handle.Free();
return result;
}
更好的是什麼條件?順便說一句,我認爲第二個不符合你的期望。你測試過它們嗎?如果是這樣,請向我們展示您用於確保方法按預期工作的代碼。 – GameScripting
更好的表現(我編輯我的帖子)。你確定#2不起作用嗎? –
好的。所以有一些差異。你能告訴更多嗎? –