ACDTP_RECEIVE_HEAD ac=new ACDTP_RECEIVE_HEAD();
ac.PktLength=10000000;
ac.PktType=1;
byte[] Bytes=new byte[System.Runtime.InteropServices.Marshal.SizeOf(ac)];
byte[] byte1=BitConverter.GetBytes(ac.PktLength);
byte[] byte2=BitConverter.GetBytes(ac.PktType);
byte1.CopyTo(Bytes,0);
byte2.CopyTo(Bytes,byte1.Length-1);

解决方案 »

  1.   

    那又如何从Byte字节流得到以上的结构呢?查了资料好象PttoStruct函数可以,可是我不知道怎么将byte[]转化成IntPtr
      

  2.   

    哦,好像还有Marshal.StructureToPtr啊:)
    PttoStruct是将非托管结构转换为托管结构,大致应该这样吧public unsafe static ACDTP_RECEIVE_HEAD* getPtr()
    {
    return (ACDTP_RECEIVE_HEAD*)0; //allocate memory in free heep from here 
    }
    public static Fun()
    {
        unsafe
        { 
        object o=Marshal.PtrToStructure((System.IntPtr)Form1.getPtr(),typeof(ACDTP_RECEIVE_HEAD));
        }
    }
      

  3.   

    看看这个吧
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconoutarrayofstructssample.asp
      

  4.   

    呵呵,我已经找到办法了,是先用marshal的方法申请内存块,然后内存拷贝得到inptr
    谢谢上面的兄弟