Используя Google protobuf, я сохраняю свои сериализованные сообщения в файл - в каждом файле есть несколько сообщений. У нас есть версии кода на C ++ и Python, поэтому мне нужно использовать функции protobuf, которые доступны на обоих языках. Я экспериментировал с использованием SerializeToArray и SerializeAsString, и, кажется, есть следующие неудачные условия:
SerializeToArray: как предлагается в одном ответе, лучший способ использовать это, чтобы префикс каждого сообщения с его размером данных. Это отлично подойдет для C ++, но в Python это не выглядит возможным - я не прав?
SerializeAsString: генерирует сериализованную строку, эквивалентную ее двоичному аналогу - которую я могу сохранить в файл, но что произойдет, если один из символов в результате сериализации будет \ n - как нам найти окончания строк, или окончание сообщений по этому вопросу?
Обновление:
Пожалуйста, позвольте мне немного перефразировать. Насколько я понимаю, я не могу записывать двоичные данные в C ++, потому что тогда наше приложение Python не может читать данные, поскольку оно может только анализировать строковые сериализованные сообщения. Должен ли я вместо этого использовать SerializeAsString
в C ++ и Python? Если да, то лучше ли хранить такие данные в текстовом файле, а не в двоичном файле? У меня двоичное чувство, но, как вы видите, это не похоже на вариант.