public struct a
  {
      public short a1;
      public short a2;
      public short a3;
      public short a4;
}
请教如何将一个byte[]转化成a的结构

解决方案 »

  1.   

            [StructLayout(LayoutKind.Sequential, Pack = 1)]
            public struct FILE_TAIL_INFO
            {
                public short a1;
                public short a2;
                public short a3;
                public short a4;
            }        byte []byteAry = new byte[Marshal.SizeOf(typeof(FILE_TAIL_INFO)];
            //填充byteAry        IntPtr ptr = GCHandle.Alloc(byteAry, GCHandleType.Pinned).AddrOfPinnedObject();
            FILE_TAIL_INFO fileInfo =
                    (FILE_TAIL_INFO)Marshal.PtrToStructure(ptr, typeof(FILE_TAIL_INFO));
      

  2.   

    结构体序列化后变成byte数组byte数组反序列化后.....
      

  3.   

    to:Delphigis
    按照您的代码,填充byteAry={00,01,00,01,00,01,00,01}
    得到的fileInfo 的值为256,256,256,256
      

  4.   

    二进制和文本模式不一样,不要这样填充,没有意义,你的byte[]应该是从文件中读来的,不用管,读来就行内存中有高位和低位,这样就行了
    byte[] byteAry = {1,0,1,0,1,0,1,0};