Разбор байтов протокола

декодер Protobuf

Сначала изучите исходный wire-поток; самостоятельную схему .proto добавляйте только для имён и объявленных типов.

декодер Protobuf

Ввод

Необязательная схема .proto

Результат

Байты и схема обрабатываются в браузере, без отправки.

Параметры

Введите wire-сообщение или varint.

Декодер Protobuf нужен, когда в журнале остались только байты сообщения. Даже без файла .proto он позволяет увидеть номера полей, wire-типы и точные границы значений.

Формат передачи protobuf не хранит исходные имена полей. Участок с длиной может оказаться строкой, байтами, вложенным сообщением или packed-значениями. Возможные трактовки нельзя выдавать за тип из схемы.

Зачем использовать декодер Protobuf?

Каждая интерпретация сверяется с исходными байтами.

Найти поле в исходном пакете

Декодер Protobuf показывает для поля смещения от нуля, wire-тип и исходный hex. Если длина выходит за границу сообщения, ошибка указывает на проблемный байт.

Поток байтов разделён на поля с номерами и точными диапазонами.

Добавить схему, сохранив сырой вид

Вставьте самостоятельный .proto и выберите тип сообщения. Именованный JSON появится рядом с исходными полями, чтобы можно было проверить происхождение каждого значения.

Дерево полей по номерам связано с деревом значений из схемы.

Три проверки перед выводами

01

Явно выбрать формат байтов

По умолчанию используется Hex с пробелами, двоеточиями и префиксами 0x. Для Base64 переключите формат вручную: короткая строка может подходить сразу к обоим.

02

Оставить неоднозначность видимой

Wire-тип 0 может означать unsigned, signed, ZigZag, bool или enum. Тип 2 подходит строке, bytes и вложенному сообщению. Только .proto определяет заявленный тип.

03

Следить за актуальностью результата

Автоматический разбор ждёт 350 мс. После отключения используйте Ctrl/Cmd + Enter. Любое изменение сразу блокирует копирование и скачивание прежнего результата.

Что можно установить по байтам

Четыре основных wire-типа

Декодер Protobuf читает varint, fixed64, значения с длиной и fixed32. Оборванные данные и устаревшие group-теги вызывают ошибку с указанием позиции.

Точное преобразование varint

Режим varint декодирование читает uint64 и кодирует десятичное число обратно. Явный выбор ZigZag даёт sint64; BigInt защищает большие значения от округления Number.

JSON по локальной схеме

Самостоятельный .proto позволяет выбрать корневой тип и читать повторяющиеся либо вложенные поля. При ошибке схемы исходный wire-разбор остаётся доступным.

Hex исходного сообщения

Экспорт меняет только запись входных байтов на единый формат. Он не сериализует заново сообщение, тип которого лишь предполагался.

Что не следует выводить из wire

Без схемы нет настоящих имён
Декодер Protobuf без .proto знает номера и wire-типы, но не имена полей, обозначения enum или связи oneof. Он не придумывает эти сведения.
Читаемый UTF-8 не доказывает string
Один и тот же блок может выглядеть текстом и корректным вложенным сообщением. Считайте варианты подсказками до сверки с объявлением.
Только один локальный .proto
Imports, удалённые URL и загрузка зависимостей не поддерживаются. Сначала подготовьте самодостаточное определение в проекте.
Без обработки транспортного кадра
Вставляйте байты самого сообщения. Пятибайтовый заголовок gRPC и сжатие нужно снять заранее; кодирования целого сообщения из JSON здесь нет.

Вопросы про декодер Protobuf

Можно ли декодировать protobuf без файла .proto?

Да, если нужны структура, номера, wire-типы, смещения и сырые значения. Для исходных имён и точных типов требуется соответствующий .proto.

Что означают типы передачи protobuf?

Нижние три бита тега задают способ хранения следующего значения. Они не определяют все типы на уровне приложения.

Вставлять protobuf как hex или base64?

Выбирайте Hex для пар шестнадцатеричных цифр, Base64 для закодированной строки. Автоматического угадывания здесь нет.

Почему varint показан как несколько разных чисел?

Одни и те же биты читаются как uint64 или ZigZag sint64. Правильный смысл задаёт объявление в схеме.

Загружается ли куда-либо декодируемая полезная нагрузка?

Нет. Байты и необязательный .proto обрабатываются в браузере, без отправки содержимого на сервер.

Нашли определение, которое должно поддерживаться?

Вернитесь к декодеру Protobuf

Декодер Protobuf помогает сверить смещения и исходный hex со схемой, прежде чем считать одно из возможных прочтений окончательным.