У меня есть несколько структур, которые начинаются с структуры заголовка. Как этоUnion in C# with StructLayout
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++?
Что вы подразумеваете под «Я не могу получить данные из заголовка»? Вы получаете исключение? Вы получаете неверные данные? Из какого поля вы пытаетесь получить доступ к заголовку, поле 'header' или' buffer'? –
Я положил это в буфер: {0xe0 0x11 0x11 0x00 0x05 0x00} Но когда я это сделал, recBuffer.header.start был 0x00 вместо 0xe0. – Calypoter