CoderTools

CBOR Кодек

Кодирование и декодирование бинарного формата данных CBOR

🔒 100% Локальная обработкаВведенные вами данные обрабатываются полностью в браузере и не отправляются на сервер.

Вставьте данные CBOR из сетевых захватов, IoT устройств или API ответов

Примеры данных

Результат декодирования

Введите данные CBOR и нажмите Декодировать для просмотра результатов

Справочник типов данных CBOR

Основной тип Название типа Байты заголовка Описание
0Беззнаковое целое0x00-0x1BНеотрицательные целые числа от 0 до 2^64-1
1Отрицательное целое0x20-0x3BОтрицательные целые числа от -1 до -2^64
2Байтовая строка0x40-0x5BСырые бинарные данные произвольной длины
3Текстовая строка0x60-0x7BТекстовые строки в кодировке UTF-8
4Массив0x80-0x9BУпорядоченная коллекция элементов данных
5Map0xA0-0xBBПары ключ-значение (объект)
6Тег0xC0-0xDBСемантический тег для расширенных типов
7Simple/Float0xE0-0xFBБулевые значения, null, undefined и числа с плавающей точкой

Документация протокола CBOR

Что такое CBOR?

CBOR (Concise Binary Object Representation) — это формат бинарной сериализации данных, определённый в RFC 8949. Разработанный как компактная альтернатива JSON, CBOR кодирует структурированные данные в эффективный бинарный формат, сохраняя совместимость с моделью данных JSON. Формат является самоописывающимся, что означает, что декодеры могут парсить данные без внешних определений схемы. CBOR был специально разработан для ограниченных сред, таких как IoT устройства и встроенные системы, где пропускная способность и вычислительная мощность являются ограниченными ресурсами.

Структура бинарного кодирования

Каждый элемент данных CBOR начинается с одного байта, содержащего два поля: основной тип (3 бита) и дополнительную информацию (5 бит). Основной тип определяет категорию данных (целое число, строка, массив и т.д.), в то время как дополнительная информация указывает длину аргумента или содержит небольшие значения напрямую. Этот компактный дизайн заголовка означает, что простые значения, такие как маленькие целые числа, требуют только одного байта.

Доп. инфо Значение
0-23Значение закодировано напрямую (0-23)
24Следует 1 беззнаковый байт
25Следуют 2 беззнаковых байта (big-endian)
26Следуют 4 беззнаковых байта (big-endian)
27Следуют 8 беззнаковых байт (big-endian)
31Неопределённая длина (для строк, массивов, map)

Опции кодирования длины контейнера

CBOR обеспечивает гибкость в кодировании длин контейнеров (массивов и карт). Хотя все допустимые кодировки создают семантически идентичные данные, двоичное представление различается. Этот инструмент предлагает четыре режима кодирования для различных системных требований.

Пример кодирования: {"name":"Alice","age":30}

Один и тот же JSON-объект можно закодировать несколькими допустимыми способами:

Режим Байты заголовка Описание
CompactA2 ...0xA2 = fixmap(2), минимальное кодирование
Explicit 16-bitB9 00 02 ...0xB9 = map16, следует 2-байтная длина
Explicit 32-bitBA 00 00 00 02 ...0xBA = map32, следует 4-байтная длина
IndefiniteBF ... FF0xBF = неопределённая map, заканчивается 0xFF

Все четыре кодировки декодируются в идентичный JSON. Выбирайте компактный для экономии размера, явные длины для совместимости протоколов или неопределённый для потоковых сценариев.

Сравнение CBOR и JSON

Оба формата представляют одну и ту же логическую модель данных, но служат разным целям. CBOR приоритизирует компактное кодирование и эффективность обработки, тогда как JSON делает упор на человекочитаемость и универсальную текстовую совместимость.

Преимущества CBOR
  • Меньший размер кодирования (обычно 30-50%)
  • Нативная поддержка бинарных данных
  • Более быстрый парсинг и кодирование
  • Встроенные семантические теги для дат, URI и т.д.
Преимущества JSON
  • Человекочитаемый и редактируемый
  • Универсальная поддержка браузеров/языков
  • Более простая отладка и логирование

Распространённые применения

  • Коммуникация IoT устройств и передача данных сенсоров
  • Протоколы аутентификации WebAuthn/FIDO2
  • Безопасность COSE (подпись и шифрование объектов CBOR)
  • Сообщения CoAP (протокол ограниченных приложений)
  • Конфигурация встроенных систем и хранение данных

Семантические теги

Теги CBOR предоставляют семантическое значение элементам данных. Теги являются опциональными обёртками, которые указывают, как должно интерпретироваться обёрнутое значение, позволяя расширения типов за пределами базовых типов данных.

Номер тега Семантическое значение
0Стандартная строка даты/времени (RFC 3339)
1Дата/время на основе эпохи (Unix timestamp)
2Большое положительное число
3Большое отрицательное число
32URI ссылка
55799Самоописывающийся CBOR (магическое число)

Быстрое меню

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