zoukankan      html  css  js  c++  java
  • C# byte[]、struct、intptr等的相互转换

    1.struct byte[]互相转换

    
    
     //struct转换为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);
                }
            }
    
            //byte[]转换为struct
            public static object BytesToStruct(byte[] bytes, Type type)
            {
                int size = Marshal.SizeOf(type);
                IntPtr buffer = Marshal.AllocHGlobal(size);
                try
                {
                    Marshal.Copy(bytes, 0, buffer, size);
                    return Marshal.PtrToStructure(buffer, type);
                }
                finally
                {
                    Marshal.FreeHGlobal(buffer);
                }
            }
    

     

    2.Intptr、byte[]互相转换

    //IntPtr转byte[]

    IntPtr y;//初始化 略 byte[] ys = new byte[yLength]; Marshal.Copy(y, ys, 0, yLength);



    //byte[]转换为Intptr
            public static Intptr BytesToIntptr(byte[] bytes)
            {
                int size = bytes.Length;
                IntPtr buffer = Marshal.AllocHGlobal(size);
                try
                {
                    Marshal.Copy(bytes, 0, buffer, size);
                    return buffer;
                }
                finally
                {
                    Marshal.FreeHGlobal(buffer);
                }
            }

    至于struct和Intptr转换,完全可以参考上面的函数

  • 相关阅读:
    SCOI2012 奇怪的游戏
    AHOI2013 差异
    HAOI2018 染色
    HNOI2015 开店
    PKUWC2018 随机游走
    HAOI2015 按位或
    Luogu4859 二项式反演
    CTSC2018 混合果汁
    yii2.0邮件发送问题解决
    yii2.0 elasticsearch模糊查询
  • 原文地址:https://www.cnblogs.com/jhlong/p/5715015.html
Copyright © 2011-2022 走看看