您的位置:首页 > 编程语言 > C#

C# struct和byte[]之间的转化

2017-12-22 14:57 267 查看
这里只有两个函数:

using System.Text;

using System.Globalization;

        

// Summary:

        //     convert a struct data to list<byte>

        //

        public static byte[] StructToBytes(object structObj)

        {

            int size = Marshal.SizeOf(structObj);

            IntPtr buffer = Marshal.AllocHGlobal(size);

            try

            {

                Marshal.StructureToPtr(structObj, buffer, false);

                byte[] bytes = new byte[size];

                Marshal.Copy(buffer, bytes, 0, size);

                return bytes;

            }

            finally

            {

                Marshal.FreeHGlobal(buffer);

            }
        }

        public static object BytesToStruct(byte[] bytes, Type strcutType)

        {

            int size = Marshal.SizeOf(strcutType);

            IntPtr buffer = Marshal.AllocHGlobal(size);

            try

            {

                Marshal.Copy(bytes, 0, buffer, size);

                return Marshal.PtrToStructure(buffer, strcutType);

            }

            finally

            {

                Marshal.FreeHGlobal(buffer);

            }

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# struct byte