Здесь у меня есть два метода, которые могут анализировать struct для byte [], и byte [] для struct.
Итак, как мне разобрать "массив массивов" в байтовый массив, а байтовый массив синтаксического анализатора - в массив массивов. Например:
byte[] getBytes<T>(T[] str) where T : struct
T[] fromBytes<T>(byte[] byte) where T : struct
// ---- здесь структура в байты [] --- байты [] в структуру ---
byte[] getBytes<T>(T str) where T : struct
{
int size = Marshal.SizeOf(str);
byte[] arr = new byte[size];
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(str, ptr, true);
Marshal.Copy(ptr, arr, 0, size);
Marshal.FreeHGlobal(ptr);
return arr;
}
T fromBytes<T>(byte[] arr) where T : struct
{
T str = new T();
int size = Marshal.SizeOf(str);
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.Copy(arr, 0, ptr, size);
str = (T)Marshal.PtrToStructure(ptr, str.GetType());
Marshal.FreeHGlobal(ptr);
return str;
}