现有一个结构体如下:
                  [StructLayout(LayoutKind.Explicit )]
public struct MMSG
{
[FieldOffset(0)] public uint  wd;
[FieldOffset(4)] public ushort wm;
[FieldOffset(6)] public ushort w1;
[FieldOffset(8)] public ushort w2;
[FieldOffset(10)] public ushort w3;
}
怎样把这个结构体中的数据按数据大小,顺序存放到一个Byte[]中呢

解决方案 »

  1.   

    数据类型好像不对吧~~~~struct里面是uint和ushortt 不能转到 Byte[]
      

  2.   

    UP,顶
    ================================================================
    此帖通过csdn小助手回复。
        CSDN小助手是使用vb.net编写的CSDN论坛脱机“外挂”,她能够在
    脱离IE的情况下使用Csdn论坛。程序只加载最核心的数据,所以显示更
    快,产生的流量更小。    下载地址:http://qqwwee.com/csdn.rar
    ================================================================
      

  3.   

    这下行了 用下面这段这段代码就OK
    public unsafe  byte[] Struct2Bytes(MMSG obj)
    {
    int size = Marshal.SizeOf(obj);
    byte[] bytes = new byte[size];
    fixed(byte* pb = &bytes[0])
    {
    Marshal.StructureToPtr(obj,new IntPtr(pb),true);
    }
    return bytes;
    }
      

  4.   

    up以前我把class对象转到byte[],采用序列化的方法,没有你的好!
      

  5.   

    那么,你用上面的代码转为byte[], 又怎么转为 MMSG 对象呢?
      

  6.   

    同问,我也想知道如何把byte[]转化回去呢
      

  7.   

    look this
    http://search.csdn.net/Expert/topic/1865/1865020.xml?temp=.6136896