У меня есть буферы протокола Google 80%, работающие на Python3. Мой файл .proto работает, я кодирую данные, жизнь почти хороша. Проблема в том, что я не могу ParseFromString получить результат SerializeToString. Когда я печатаю SerializeToString, он выглядит так, как я ожидал, довольно компактное двоичное представление (которому предшествует b).Буферы протокола Google (protobuf) в Python3 - проблема с ParseFromString (кодирование?)
Я предполагаю, что, возможно, это разница в том, как обрабатывать строки Python2 и Python3. Путь SerializeToString - это Bytes, а не строка.
Печатный вывод SerializeToString (типа Python есть):
b'\x10\xd7\xeb\x8e\xcd\x04\x1a\[email protected]\x08\x80\xf8\xde\xc3\x9f\xb0\x81\x89\x14\x11\x00\x00\x00\x00\x00\x80d\xc0\x19\x00\x00\x00\x00\x00\[email protected]!\x00\x00\x00\x00\x00\x80R\xc0)\x00\x00\x00\x00\x00x\xb7\xc01\x00\x00\x00\x00\x00\x8c\[email protected]\x00\x00\x00\x00\x00\x16\[email protected]'
результат ParseFromString (сообщение):
None
не предоставляется ошибка ...
Так что - мой лучший думаю, что все, что мне нужно сделать, это .decode() созданный объект байтов, проблема в том, что я не знаю, что такое кодировка. Я пробовал UTF-8, -16, Latin-1 и несколько других без успеха. Мой Google-Fu силен, но я ничего не нашел по этому поводу.
Любая помощь будет оценена по достоинству.
Показать код, который вызывает ParseFromString –