我有多个结构体都以一个头结构体开头。就像这样
public struct BaseProtocol {
public Header header;
public Footer footer;
};
标题是
public struct Header {
public Byte start;
public Byte group;
public Byte dest;
public Byte source;
public Byte code;
public Byte status;
};
现在的问题是我需要将它们与一个Byte[]联合起来。我尝试了以下代码:
[StructLayout( LayoutKind.Explicit, Size=255 )]
public struct RecBuffer {
[FieldOffset( 0 )]
public Header header;
[FieldOffset( 0 )]
[MarshalAs( UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 255 )]
public Byte[] buffer;
};
当我填充缓冲区时,我无法从头文件中获取数据。我该如何让C#实现与C++中union相同的功能?
header
还是buffer
字段? - Allon Guralnek