@Sersoftin

Как сериализовать данные в бинарный формат?

Имеется некий объект. В объекте есть всякого рода данные начиная от булевых переменных и заканчивая строками. Как это все хозяйство сериализовать в объект без лишнего оверхеда? Причем чтобы еще порядок байт поменялся в big endian.

Вот у меня есть структура:
struct Point {
    int x;
    int y;
    int z;
    std::string name;
};

// заполним ее
Point point;
point.x = 5;
point.y = 10;
point.z = 7;
point.name = "test";


Теперь я хочу сделать что-то типа:
std::vector<byte> buff = serializer::to_binary(point);

И получить в итоге хочу это:
// мы сериализовали данные в бинарный формат
0x00 0x00 0x00 0x05 0x00 0x00 0x00 0x0A 0x00 0x00 0x00 0x07 0x74 0x65 0x73 0x74 0x00


Какими путями можно этого достичь? Понятное дело, что вряд ли есть решение, которое может сделать вот прям все сразу так, как я хочу. Но вдруг кто-то знает связку чего-нибудь, чтобы достичь такого эффекта. Всякие Boost.Serialization не предлагать. Изменение формата тоже не предлагать. Писать руками, конвертировать порядок байт всякими там htons, htonl и т.д. - нет, спасибо.
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 2
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Всякие Boost.Serialization не предлагать.

Пока в с++ не завезут compile time рефлексию, то только для POD типов https://habr.com/post/344206/
Просто возьмите protobuf и не мучайтесь.
Ответ написан
вот это как-то довелось попробовать: https://github.com/USCiLab/cereal
легко завелось, stl контейнеры работают из коробки, легко расширить сериализацию на свои структуры и классы.
точно помню, что можно было писать в cross-platform-binary и json форматы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы