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