В настоящее время я сохраняю и загружаю некоторые данные в структурах C / C ++ в файлы с помощью fread () / fwrite (). Это прекрасно работает при работе в этом приложении C (я могу перекомпилировать всякий раз, когда структура меняется, чтобы обновить аргументы sizeof () для fread () / fwrite ()), но как я могу загрузить этот файл в других программах, не зная заранее sizeof () с структуры C?
В частности, я написал это другое Java-приложение, которое визуализирует данные, содержащиеся в этом двоичном файле структуры C, но я хотел бы получить общее решение о том, как читать этот двоичный файл. (Вместо того, чтобы мне приходилось вручную добавлять sizeof () в исходный код приложения Java при каждом изменении структуры C ...)
Я думаю о сериализации в какой-то текст или XML, но я не уверен, с чего начать (как сериализовать в C, затем как десериализовать в Java и, возможно, других языках в будущем), и если это целесообразно, то здесь, где один из членов структуры является массивом с плавающей запятой, который может быть увеличен до ~ 50 МБ в двоичном формате (и у меня есть сотни этих файлов данных для чтения и записи).
Структура C проста (без серьезных вложений или указателей) и выглядит следующим образом:
struct MyStructure {
char *title;
int id;
int param1;
int param2;
float *data;
}
Части, которые могут измениться больше всего, являются целыми числами параметров.
Какие у меня есть варианты?