Подтвердить что ты не робот

Как сериализовать данные в C

Я пишу сервер-клиентское приложение в c и вам нужно отправить некоторые структуры взад и вперед.

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

4b9b3361

Ответ 1

Если вам нужно беспокоиться о совместимости между различными версиями сервера и клиента, я бы использовал буферы протокола Google или JSON (либо существующую реализацию, либо напишите самостоятельно). Если версии всегда будут синхронизированы, просто напишите свою собственную двоичную сериализацию или даже настройте структуру в памяти как "сериализованную" форму и используйте функции доступа для ее чтения и записи. Это в основном влечет за собой сохранение чисел в виде фиксированного количества байтов в фиксированном-endian порядке или в каком-либо формате vlc, если вы хотите получить фантазию, и используя дескрипторы объектов какого-либо рода (простейший - смещение в массив) вместо явных указателей когда один объект должен ссылаться на другой.

Одним из очень приятных побочных преимуществ хранения данных в "сериализованной" форме является то, что вы можете работать с огромными наборами данных на диске (например, через mmap) без необходимости писать свой собственный сложный код кеширования.