Я хочу преобразовать байтовый массив (размер 38) в эту структуру.
когда я редактирую код
public byte [] arrayAxis;
этот код работает очень настенно.
пожалуйста, помогите ... спасибо!
[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;
}
Я написал и использовал эту функцию.
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;
}