Это немного зависит от того, используете ли вы двоичную форму (которая обычно используется по умолчанию при работе с protobuf) или форму json (да, protobuf включает опцию json, по крайней мере, в некоторых библиотеках, но не во всех).
В двоичной форме данные состоят из номеров полей и значений; а не поля названия. В качестве примера, если мы используем пример:
optional string name = 1; // remove the "optional" if using proto3 syntax
и присвойте значение "Nika" (и сериализуйте его), тогда двоичные данные будут включать 1
(в слегка измененной форме) и форму Nika
в кодировке UTF-8, но не содержать "имя".
Вам не абсолютно нужно иметь схему для ее декодирования, но если вы это сделаете, это будет намного проще, так как многие части спецификации иначе неоднозначны, используя один и тот же «тип проводника» (т. е. формат кодирования) для нескольких типов данных или для нескольких значений одного и того же типа данных (например: вы не можете сказать, является ли целое число знаковым, беззнаковым , или "закодировано зигзагом" без схемы (или хорошего предположения), и фактическое значение, которое вы получаете, может сильно различаться в зависимости от этого.
Чтобы узнать, что вы можете извлечь из необработанных данных protobuf без схемы, попробуйте: https://protogen.marcgravell.com/decode
person
Marc Gravell
schedule
06.12.2018