Перевести структуру в массив байтов в С#

public static byte[] StructToBuff<T>(T value) where T : struct
{
      byte[] arr = new byte[Marshal.SizeOf(value)]; // создать массив
      GCHandle gch = GCHandle.Alloc(arr, GCHandleType.Pinned); // зафиксировать в памяти
      IntPtr ptr = Marshal.UnsafeAddrOfPinnedArrayElement(arr, 0); // и взять его адрес
      Marshal.StructureToPtr(value, ptr, true); // копировать в массив
      gch.Free(); // снять фиксацию
     return arr;
}

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *