如果我c++发送一个struct类型的byte数组
struct login

   char login;
   char user[20];
   char password[20];

请问c#的收到这个byte数组怎么转换为struct类型?
c#结构体中数组不是不可以是固定长度吗?
这个怎么转换呀?

解决方案 »

  1.   

            /// <summary>
            /// byte数组转结构体
            /// </summary>
            /// <param name="bytes">byte数组</param>
            /// <returns>转换后的结构体</returns>
            public object ConvertToStruct(byte[] bytes)
            {
                int size = 0;
                //得到结构体的大小
                size = Marshal.SizeOf(typeof(结构体类型));
                //分配结构体大小的内存空间
                IntPtr structPtr = Marshal.AllocHGlobal(size);
                //将byte数组拷到分配好的内存空间
                Marshal.Copy(bytes, 0, structPtr, size);
                //将内存空间转换为目标结构体
                object obj = Marshal.PtrToStructure(structPtr, typeof(结构体类型));
                //释放内存空间
                Marshal.FreeHGlobal(structPtr);
                //返回结构体
                return obj;
            }需要注意你定义的结构体的字节对齐类型应该和c++那边字节对齐类型一样