Statt eine Methode mit "unsafe" zu kennzeichnen, kannst du auf Marshaller ausweichen.
Irgendwo aus dem Netz gefischt:
Code:
static byte[] YourStructToBytes( test s )
{
int size = Marshal.SizeOf( s );
byte[] retArr = new byte[ size ];
IntPtr buf = Marshal.AllocHGlobal( size ); // create unmanaged memory
Marshal.StructureToPtr ( s, buf, false ); // copy struct
for (int i=0; i<size; ++i)
{
retArr[i] = Marshal.ReadByte(buf, i); // read unmanaged bytes
}
Marshal.FreeHGlobal( buf );
return retArr;
}