Там в несколько способов сделать это. Возможно, вы сможете играть с marshaling attributes, например StructLayout, чтобы упаковать структуру в массив байтов, но это, вероятно, сложно и не стоит усилий.
Вы можете использовать специализированную структуру, такую как Protobuf, для атрибуции класса таким образом, чтобы он был сериализован в соответствии с необходимой структурой.
Но, по моему опыту, самый простой, быстрый и самый гибкий способ создания такой двоичной структуры - использовать класс MemoryStream для хранения буфера, а затем использовать вокруг него BinaryWriter, чтобы фактически записать двоичные данные в поток.
В любом случае, это помогает иметь рабочий сервер для ссылки. Используйте инструмент, например Wireshark или Microsoft Network Monitor, для захвата проводного трафика, чтобы вы могли сравнить свой формат проводов с примером, который, как известно, работает.
Я принимаю это, «просто», вы имеете в виду что-то другое, кроме принятия 0xFF и т. Д., И смещение влево на несколько бит, определяемых константами, которые сопоставляются с описанием области на приведенном выше графике? – Dave