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转换,完全可以参考上面的函数

  • 相关阅读:
    sizeof与strlen的区别
    面试题46:求1+2+...+n
    opennebula 安装指定参数
    opennebula 开发记录
    virsh 查看hypervisor特性
    opennebula kvm日志
    Cgroup
    opennebula kvm 创建VM oned报错日志
    opennebula kvm 创建虚拟机错误
    golang hello
  • 原文地址:https://www.cnblogs.com/jhlong/p/5715015.html
Copyright © 2011-2022 走看看