【发布时间】:2019-02-17 00:31:27
【问题描述】:
我想将字节数组(大小为 38)转换为这个结构。
当我将代码编辑为 公共字节[]数组轴; 这段代码运行得很顺利。
请帮忙...谢谢!
[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;
}
【问题讨论】:
-
运行此代码时会发生什么 - 是否有异常?您有一些示例输入和预期输出吗?