Marsharing을 이용하여 memory copy형식으로 변환하는 예제입니다.
대신 struct에 [Serializable] 추가 해주셔야 합니다.
byte[] to Struct
IMAGEHEADER header = new IMAGEHEADER ()
int size = Marshal.SizeOf(header);
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.Copy(arr, 0, ptr, size);
header = ( IMAGEHEADER) Marshal .PtrToStructure(ptr, header.GetType());
Marshal.FreeHGlobal(ptr);
struct to byte[]
int size = Marshal .SizeOf(header);
byte [] arr = new byte[size];
IntPtr ptr = Marshal .AllocHGlobal(size);
Marshal.StructureToPtr(header, ptr, true);
Marshal.Copy(ptr, arr, 0, size);
Marshal.FreeHGlobal(ptr);