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;
}

 

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

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

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

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и соглашаюсь c политикой конфиденциальности *