Какова цель заголовка в flatbuffers? - PullRequest
0 голосов
/ 26 апреля 2020

Я пытался понять проводной формат, и, как я понимаю, первые 4 байта просто кодируют (смещение) в тип root. Хотя я, кажется, понимаю это, я не могу понять мотивацию для этого косвенного обращения. Почему не просто root_type хранится в байте 0-4?

1 Ответ

1 голос
/ 26 апреля 2020

Это смещение к таблице root. Это необходимо потому, что таблице root обычно предшествует таблица с переменным размером + выравнивание (см. https://google.github.io/flatbuffers/flatbuffers_internals.html), поэтому даже в теории мы можем запустить буфер с таблицей v и вычислить начало Исходя из таблицы root, проще и последовательнее было просто сохранить смещение.

Существуют и другие мелкие детали формата, которые не совсем оптимальны в ретроспективе, но важная вещь в Формат сериализации таков, что он всегда совместим вперед / назад, поэтому теперь он не изменится:)

...