struct和byte[]相互转换(用Marshal类实现)

it2022-05-09  31

相当于序列化与反序列化,但是不用借助外部文件1、struct转换为byte[]static   byte[]   StructToBytes(object   structObj)     {     int   size   =     Marshal.SizeOf(structObj);     IntPtr   buffer   =   Marshal.AllocHGlobal(size);     try     {     Marshal.StructureToPtr(structObj,   buffer,   false);     byte[]   bytes   =   new   byte[size];     Marshal.Copy(buffer,   bytes,   0,   size);     return   bytes;     }     finally     {     Marshal.FreeHGlobal(buffer);     }         }        2、byte[]转换为struct  static   object   BytesToStruct(byte[]   bytes,   Type   strcutType)     {     int   size   =     Marshal.SizeOf(strcutType);     IntPtr   buffer   =   Marshal.AllocHGlobal(size);     try     {     Marshal.Copy(bytes,   0,   buffer,   size);     return   Marshal.PtrToStructure(buffer,   strcutType);     }     finally     {     Marshal.FreeHGlobal(buffer);     }     }

转载于:https://www.cnblogs.com/tuyile006/archive/2006/12/28/605962.html

相关资源:数据结构—成绩单生成器

最新回复(0)