这是我的机构体
        /// <summary>
        /// Deliver 包结构 
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        private struct Deliver
        {
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
            public byte[] pUserNumber;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
            public byte[] pSpNumber;
            public byte tppid;
            public byte tpudhi;
            public byte msgcoding;
            public int msglen;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
            public byte[] pContent;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
            public byte[] pReserve;
        }
 public int Create_RecvMessage()
{
               Deliver deliver = new Deliver();  //调用Deliver,给它赋值
               deliver.pUserNumber = ????
}Deliver 结构里面的pUserNumber ,pSpNumber等都是 byte[]类型的,如何给他赋值

解决方案 »

  1.   

    你是不是想问怎么构造一个byte数组啊?
    可以用String转换得到。
      

  2.   

    试试:        
            /// <summary>
            /// 将object格式化成字节数组byte[]
            /// </summary>
            /// <param name="dsOriginal">object对象</param>
            /// <returns>字节数组</returns>
            public static byte[] GetBinaryFormatData(object dsOriginal)
            {
                byte[] binaryDataResult = null;
                MemoryStream memStream = new MemoryStream();
                IFormatter brFormatter = new BinaryFormatter();
                brFormatter.Serialize(memStream, dsOriginal);
                binaryDataResult = memStream.ToArray();
                memStream.Close();
                memStream.Dispose();
                return binaryDataResult;
            }
      

  3.   

    [StructLayout(LayoutKind.Sequential)]
      private struct Deliver
      {
      [MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
      public byte[] pUserNumber;
      [MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
      public byte[] pSpNumber;
      public byte tppid;
      public byte tpudhi;
      public byte msgcoding;
      public int msglen;
      [MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
      public byte[] pContent;
      [MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
      public byte[] pReserve;
      }
     public int Create_RecvMessage()
    {
      Deliver deliver = new Deliver(); //调用Deliver,给它赋值
      deliver.pUserNumber = new byte[22];
      deliver.pSpNumber = new byte[22];
        .
        .
        .
    }
      

  4.   

    Deliver deliver = new Deliver(); //调用Deliver,给它赋值
    1,结构不用new,就像int i = new int(),一般不用new int();
    2,你可以自定义初始化结构
            private struct Deliver
            {
                public byte[] pUserNumber;
                public byte[] pSpNumber;
                public byte tppid;
                public byte tpudhi;
                public byte msgcoding;
                public int msglen;
                public byte[] pContent;
                public byte[] pReserve;            public Deliver(int i)
                {
                    pUserNumber = new byte[100];
                    pSpNumber = new byte[100];
                    pContent = new byte[100];
                    pReserve = new byte[100];
                    tppid = 0;
                    tpudhi = 0;
                    msgcoding = 0;
                    msglen = 0;
                }
            }然后
    Deliver deliver = new Deliver(100);