Python API для анализа двоичного файла, который содержит данные protobuf в формате массива - PullRequest
0 голосов
/ 08 мая 2018

У меня проблема с анализом двоичного файла, содержащего данные protobuf в формате массива.

Когда я использовал python API, вывод ParseFromString всегда был нулевым или отсутствовал.

Сериализованные данные protobuf в двоичном файле были созданы с использованием C ++ API, SerializeToArray. Но для разбора файла bin я хочу использовать python для разбора. Но в python я не смог найти API для разбора сериализованных данных protobuf как массива в двоичном файле.

Есть ли Python API для решения этой проблемы? Может кто-нибудь предложить решение для этого?

1 Ответ

0 голосов
/ 08 мая 2018

Интерфейс C ++:

bool SerializeToArray(void * data, int size) const

просто сохраняет двоичные данные в байтовом массиве вместо строкового объекта.Если оно затем записывается в файл, его можно десериализовать обычным способом, как показано в учебнике :

address_book = addressbook_pb2.AddressBook()
f = open(sys.argv[1], "rb")
address_book.ParseFromString(f.read())

Тот факт, что SerializeToArray() использовался на стороне C ++, делаетНе меняйте формат файла.Конечно, код C ++ может, например, написать собственный заголовок в файл, который необходимо удалить, но это будет другая часть кода.

...