1. 程式人生 > 其它 >C#byte[]、struct、intptr等的相互轉換

C#byte[]、struct、intptr等的相互轉換

一、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); } }

二、Intptr、byte[]互相轉換

        //IntPtr轉byte[]
IntPtr y=new IntPtr(); 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); } }

來源:https://www.cnblogs.com/jhlong/p/5715015.html