Добрый день!
Задача: Имеется объект
| Код | struct __some { BYTE byValue1; BYTE byValue2; DWORD dwValue3; DWORD dwValue4; WORD wValue5; };
|
Необходимо упаковать этот объект в пакет (играться со смещениями, и жесткими приведениями структуры не хочеться). В итоге сделал так:
| Код | struct __some { BYTE byValue1; BYTE byValue2; DWORD dwValue3; DWORD dwValue4; WORD wValue5; static void serialize (const __some & utSome, BYTE * const pBuffer) { BYTE * pCurrent (pBuffer); * (pCurrent) = utSome.byValue1; pCurrent += sizeof (BYTE); * (pCurrent) = utSome.byValue2; pCurrent += sizeof (BYTE); * reinterpret_cast <DWORD * > (pCurrent) = utSome.dwValue3; pCurrent += sizeof (DWORD); * reinterpret_cast <DWORD * > (pCurrent) = utSome.dwValue4; pCurrent += sizeof (DWORD); * reinterpret_cast <WORD * > (pCurrent) = utSome.dwValue5; pCurrent += sizeof (WORD); } };
|
Довольно уродливо выглядит. Я подозреваю, что то что я затеял внутри void __some::serialize (const __some &, BYTE * const) можно организовать, используя потоки ввода/вывода;
Вопрос: Может кто решал подобные проблемы, используя потоки ввода/вывода, и поделиться своим опытом в этой области?
Заранее благодарен за ответы. |