Похоже, что документация python (также this ) для flatbuffer в настоящее время является пятнистой и иногда смешивается с API-интерфейсом c ++. Я попытался создать вектор строк следующим образом:
builder, builder2, builder3 = flatbuffers.Builder(1024), flatbuffers.Builder(1024), flatbuffers.Builder(1024)
Feature.FeatureStart(builder)
Feature.FeatureStartStringValuesVector(builder2, 1)
builder2.PrependSOffsetTRelative(builder3.CreateString('a'.encode()))
Feature.AddStringValues(builder, builder2.EndVector(1))
Feature.FeatureEnd(builder)
В строке, содержащей PrependSOffsetTRelative, я получаю сообщение об ошибке:
flatbuffers.builder.OffsetArithmeticError: flatbuffers: Арифметическая ошибка смещения c.
Я попытался заменить builder3 на builder2, или заменить builder2 / builder3 на builder, или удалить .encode (), все они привели к различным ошибкам.
Я проверил, что CreateString всегда возвращает 8, тогда как PrependSOffsetTRelative, кажется, хочет только 0 в качестве ввода. Что мне здесь не хватает? Спасибо.
Вот мой файл схемы fbs:
table Feature {
string_values:[string];
}
root_type Feature;