C# Byte[] 转struct时候遭遇exception
namespace ByteToStruct
{
     class Program
     {
         static void Main(string[] args)
         {
             FileStream f = new FileStream("test.dbf", FileMode.Open, FileAccess.Read);
             BinaryReader br = new BinaryReader(f);
             //BinaryWriter bw = new BinaryWriter(f);
             test_struct str = new test_struct();
             byte[] bt = new byte[Marshal.SizeOf(str)];
             br.Read(bt, 0, Marshal.SizeOf(str));
             str = (test_struct)BytesToStruts(bt,str.GetType());
      }
         public static object BytesToStruts(byte[] bytes, Type type)
         {
             //得到结构体的大小   
             int size = Marshal.SizeOf(type);
             //byte数组长度小于结构体的大小   
             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;
         }   
     }
}
test_struct里面就两个字段一个int类型的id另外一个string类型的name
------解决方案--------------------
------解决方案--------------------string类型和int不同,想通过二进制的读写来完成序列化和反序列化不行的,用2楼说的BinaryFormatter来完成对象的序列化和反序列化