public static byte[]
StructToBytes(
object structObj)
{
int size = Marshal.SizeOf(structObj);
byte[] _bytes =
new byte[size];
IntPtr structPtr = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(structObj, structPtr,
false);
Marshal.Copy(structPtr, _bytes,
0, size);
Marshal.FreeHGlobal(structPtr);
return _bytes;
}
public static byte[]
StructToBytes2(
object structObj1,
object structObj2)
{
int size = Marshal.SizeOf(structObj1) + Marshal.SizeOf(structObj2);
byte[] _bytes =
new byte[size];
IntPtr structPtr1 = Marshal.AllocHGlobal(Marshal.SizeOf(structObj1));
IntPtr structPtr2 = Marshal.AllocHGlobal(Marshal.SizeOf(structObj2));
Marshal.StructureToPtr(structObj1, structPtr1,
false);
Marshal.StructureToPtr(structObj2, structPtr2,
false);
Marshal.Copy(structPtr1, _bytes,
0, Marshal.SizeOf(structObj1));
Marshal.Copy(structPtr2, _bytes, Marshal.SizeOf(structObj1),
Marshal.SizeOf(structObj2));
Marshal.FreeHGlobal(structPtr1);
Marshal.FreeHGlobal(structPtr2);
return _bytes;
}
转载请注明原文地址: https://ju.6miu.com/read-679002.html