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