using System.Runtime.InteropServices; //WinAPI引用命名空間 /// <summary> /// 將Byte轉換為結構體類型 /// </summary> /// <param name="bytes"></param> /// <param name="type"></param> /// <returns></returns> public static object ByteToStruct(byte[] bytes, Type type) { int size = Marshal.SizeOf(type); if (size > bytes.Length) { return null; } //分配結構體內存空間 IntPtr structPtr = Marshal.AllocHGlobal(size); //將byte數組拷貝到分配好的內存空間 Marshal.Copy(bytes, 0, structPtr, size); //將內存空間轉換為目標結構體 object obj = Marshal.PtrToStructure(structPtr, type); //釋放內存空間 Marshal.FreeHGlobal(structPtr); return obj; }
