Я надеюсь, что заголовок описывает проблему, я изменю ее, если у кого-то есть идея получше.
Я храню информацию в такой структуре:
struct AnyStruct
{
AnyStruct() :
testInt(20),
testDouble(100.01),
testBool1(true),
testBool2(false),
testBool3(true),
testChar('x') {}
int testInt;
double testDouble;
bool testBool1;
bool testBool2;
bool testBool3;
char testChar;
std::vector<char> getBinaryBlock()
{
//how to build that?
}
}
Структура должна быть отправлена через сеть в двоичном байтовом буфере со следующей структурой:
Bit 00- 31: testInt
Bit 32- 61: testDouble most significant portion
Bit 62- 93: testDouble least significant portion
Bit 94: testBool1
Bit 95: testBool2
Bit 96: testBool3
Bit 97-104: testChar
В соответствии с этим определением результирующий std :: vector должен иметь размер 13 байт (char == байт)
Теперь у меня вопрос, как я могу сформировать такой пакет из разных типов данных, которые у меня есть. Я уже прочитал много страниц и нашел типы данных, такие как std :: bitset или boost :: dynamic_bitset, но ни один из них не решил мою проблему.
Я думаю, что легко заметить, что приведенный выше код является лишь примером, исходный стандарт намного сложнее и содержит больше разных типов данных. Решение вышеприведенного примера также должно решить мои проблемы со сложными структурами.
Последний пункт:
Проблема должна быть решена с помощью стандартных переносимых функций языка C ++, таких как STL или Boost (