如何将字节复制到C#中的struct变量中?

时间:2015-06-25 08:43:28

标签: c# sockets struct byte memcpy

我有一个struct abc,我想将字节复制到struct变量中。与C / C ++中的memcpy类似。 我通过套接字接收字节,它们是相同struct abc变量的字节。

[StructLayout(LayoutKind.Sequential, Pack = 1)]    
public struct abc
{ 
         public int a;
         public int b;
         public float c;
         public char[] d; //30 size
}

1 个答案:

答案 0 :(得分:0)

您可以将字节数组转换为您的结构,如下所示:

            int size = Marshal.SizeOf(typeof(abc));
            IntPtr ptr = Marshal.AllocHGlobal(size);

            Marshal.Copy(arr, 0, ptr, size);

            var struct = (abc)Marshal.PtrToStructure(ptr, typeof(abc));
            Marshal.FreeHGlobal(ptr);

struct现在是您转换后的结构。请记住已经对此做出的评论(即字节排序)