CoderTools

Инструмент Protocol Buffers

Кодирование, декодирование и валидация Protocol Buffers сообщений

Proto-схема

Примеры схем:

Ввод

Парсите схему и выберите тип сообщения для генерации полей формы

Вывод

Документация Protocol Buffers

Что такое Protocol Buffers?

Protocol Buffers (Protobuf) - это языконезависимый, платформонезависимый расширяемый механизм для сериализации структурированных данных, разработанный Google. Он меньше, быстрее и проще, чем XML и JSON для сериализации данных.

Ключевые особенности

  • Языконезависимый и платформонезависимый
  • Меньше и быстрее, чем XML/JSON
  • Строгая типизация с определением схемы
  • Обратная и прямая совместимость
  • Автоматическая генерация кода
  • Эффективное бинарное кодирование

Как использовать этот инструмент

  1. Введите определение .proto схемы в редакторе схем
  2. Нажмите Парсить схему для валидации и парсинга схемы
  3. Выберите тип сообщения, с которым хотите работать
  4. Для кодирования: Введите JSON данные и нажмите Кодировать
  5. Для декодирования: Введите бинарные данные и нажмите Декодировать
  6. Используйте простое декодирование для анализа бинарных данных без схемы

Возможности инструмента

Кодирование

Преобразование JSON данных в бинарный формат Protocol Buffers. Поддерживает ввод на основе форм для удобного ввода данных с валидацией типов.

Декодирование

Преобразование бинарных данных Protocol Buffers обратно в читаемый JSON формат. Поддерживает форматы ввода Base64, Hex и Hex в стиле C.

Простое декодирование

Анализ бинарных данных protobuf без схемы. Полезно для отладки, обратной разработки или анализа неизвестных сообщений.

Ввод через форму

Удобный интерфейс формы, который генерирует формы ввода на основе вашей схемы. Поддерживает вложенные сообщения, перечисления и повторяющиеся поля.

Справочник по синтаксису Proto

Protocol Buffers использует простой синтаксис для определения типов сообщений:

syntax = "proto3";

message Person {
    string name = 1;
    int32 id = 2;
    string email = 3;
    
    enum PhoneType {
        MOBILE = 0;
        HOME = 1;
        WORK = 2;
    }
    
    message PhoneNumber {
        string number = 1;
        PhoneType type = 2;
    }
    
    repeated PhoneNumber phones = 4;
}
  • syntax: Указывает версию protobuf (proto2 или proto3)
  • message: Определяет тип сообщения с полями
  • field: Каждое поле имеет тип, имя и уникальный номер
  • enum: Определяет типы перечислений
  • repeated: Отмечает поле как повторяющееся (массив/список)
  • optional: Отмечает поле как необязательное (proto3)

Скалярные типы

Protocol Buffers поддерживает различные скалярные типы:

Тип Описание По умолчанию
int32, int64Целые числа со знаком (кодирование переменной длины)0
uint32, uint64Целые числа без знака0
sint32, sint64Целые числа со знаком с кодированием ZigZag (эффективно для отрицательных чисел)0
fixed32, fixed64Целые числа без знака фиксированной ширины (4 или 8 байт)0
sfixed32, sfixed64Целые числа со знаком фиксированной ширины (4 или 8 байт)0
float, doubleЧисла с плавающей точкой (32 или 64 бита)0.0
boolЛогические значения (true/false)false
stringТекстовые строки в кодировке UTF-8""
bytesПроизвольные бинарные данныеempty

Wire-типы

Protobuf использует wire-типы для определения способа чтения значений из бинарных данных:

Wire-тип Значение Используется для
0Varintint32, int64, uint32, uint64, sint32, sint64, bool, enum
164-bitfixed64, sfixed64, double
2Length-delimitedstring, bytes, embedded messages, packed repeated
532-bitfixed32, sfixed32, float

Лучшие практики

  • Используйте синтаксис proto3 для новых проектов - он проще и более широко поддерживается
  • Сохраняйте номера полей стабильными - никогда не используйте повторно или не изменяйте номера существующих полей
  • Используйте осмысленные имена полей, которые чётко описывают данные
  • Резервируйте номера полей 1-15 для часто используемых полей (они используют 1 байт)
  • Используйте ключевое слово 'repeated' для массивов/списков значений
  • Определяйте перечисления для полей с фиксированным набором возможных значений

Часто задаваемые вопросы

Что такое Protocol Buffers (Protobuf)?

Protocol Buffers — это языково- и платформенно-независимый расширяемый механизм для сериализации структурированных данных. Он похож на JSON, но меньше, быстрее и генерирует нативные привязки для языков. Широко используется в микросервисах gRPC.

Как использовать этот онлайн инструмент Protobuf?

Сначала вставьте определение схемы `.proto` в редактор (или загрузите пример). Нажмите «Разобрать схему» и выберите тип сообщения. Затем переключайтесь между режимами «Кодировать» (JSON → Бинарный) и «Декодировать» (Бинарный → JSON) для обработки данных.

Что такое «Сырое декодирование» (Raw Decode)?

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

Безопасны ли мои данные?

Да. Этот инструмент работает на 100% в вашем браузере с использованием JavaScript (protobuf.js). Ваши схемы, JSON-данные и бинарные данные никогда не отправляются на наши серверы, гарантируя конфиденциальность вашей информации.

Распространённые случаи использования

  • Межсервисная коммуникация в микросервисах (gRPC)
  • Хранение данных и кэширование
  • Конфигурационные файлы
  • Сетевые протоколы и API

Справочные материалы

Быстрое меню

Нет недавних инструментов