I want to convert byte array(size 38) to this struct.
when I edit code to public byte[] arrayAxis; this code run very wall.
please help... thank you!
[System.Serializable]
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct SInfo
{
public byte STX;
public short Length;
public short ID;
public byte CMD;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
public float[] arrAxis;
//public float AxisX;
//public float AxisY;
//public float AxisZ;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public float[] arrQuat;
//public float QuaternionX;
//public float QuaternionY;
//public float QuaternionZ;
//public float QuaternionW;
public byte State;
public short State2;
public byte CRC;
}
I wrote and used this function.
public T FromByteArray<T>(byte[] _array)
{
BinaryReader _reader = new BinaryReader(new MemoryStream(_array));
GCHandle handle = GCHandle.Alloc(_array, GCHandleType.Pinned);
T theStructure = (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(T));
handle.Free();
return theStructure;
}