CBOR Кодек
Кодирование и декодирование бинарного формата данных CBOR
Вставьте данные CBOR из сетевых захватов, IoT устройств или API ответов
Примеры данных
Результат декодирования
Введите данные CBOR и нажмите Декодировать для просмотра результатов
Просмотр байтов
Введите валидные JSON данные для кодирования в CBOR
Кодирование длины контейнера
- Compact: Использует минимум байтов (fixmap/fixarray при ≤23 элементах)
- Explicit 16-bit: Всегда использует 2-байтную длину (префикс 0xB9/0x99)
- Explicit 32-bit: Всегда использует 4-байтную длину (префикс 0xBA/0x9A)
- Indefinite: Использует неопределённую длину с кодом завершения (0xBF...0xFF)
JSON Examples
Результат кодирования
Введите данные JSON и нажмите Кодировать для генерации 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 | Упорядоченная коллекция элементов данных |
| 5 | Map | 0xA0-0xBB | Пары ключ-значение (объект) |
| 6 | Тег | 0xC0-0xDB | Семантический тег для расширенных типов |
| 7 | Simple/Float | 0xE0-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-объект можно закодировать несколькими допустимыми способами:
| Режим | Байты заголовка | Описание |
|---|---|---|
| Compact | A2 ... | 0xA2 = fixmap(2), минимальное кодирование |
| Explicit 16-bit | B9 00 02 ... | 0xB9 = map16, следует 2-байтная длина |
| Explicit 32-bit | BA 00 00 00 02 ... | 0xBA = map32, следует 4-байтная длина |
| Indefinite | BF ... FF | 0xBF = неопределённая map, заканчивается 0xFF |
Все четыре кодировки декодируются в идентичный JSON. Выбирайте компактный для экономии размера, явные длины для совместимости протоколов или неопределённый для потоковых сценариев.
Сравнение CBOR и JSON
Оба формата представляют одну и ту же логическую модель данных, но служат разным целям. CBOR приоритизирует компактное кодирование и эффективность обработки, тогда как JSON делает упор на человекочитаемость и универсальную текстовую совместимость.
- Меньший размер кодирования (обычно 30-50%)
- Нативная поддержка бинарных данных
- Более быстрый парсинг и кодирование
- Встроенные семантические теги для дат, URI и т.д.
- Человекочитаемый и редактируемый
- Универсальная поддержка браузеров/языков
- Более простая отладка и логирование
Распространённые применения
- Коммуникация IoT устройств и передача данных сенсоров
- Протоколы аутентификации WebAuthn/FIDO2
- Безопасность COSE (подпись и шифрование объектов CBOR)
- Сообщения CoAP (протокол ограниченных приложений)
- Конфигурация встроенных систем и хранение данных
Семантические теги
Теги CBOR предоставляют семантическое значение элементам данных. Теги являются опциональными обёртками, которые указывают, как должно интерпретироваться обёрнутое значение, позволяя расширения типов за пределами базовых типов данных.
| Номер тега | Семантическое значение |
|---|---|
| 0 | Стандартная строка даты/времени (RFC 3339) |
| 1 | Дата/время на основе эпохи (Unix timestamp) |
| 2 | Большое положительное число |
| 3 | Большое отрицательное число |
| 32 | URI ссылка |
| 55799 | Самоописывающийся CBOR (магическое число) |
Связанные инструменты
Protocol Buffers Инструмент
Онлайн-кодировщик/декодер Protocol Buffers. Парсинг .proto схем, кодирование JSON в бинарный формат или декодирование бинарного в JSON
JSON Форматтер
Форматирование и валидация JSON данных для улучшения читаемости и отладки
Base64 Кодировщик/Декодер
Быстрое кодирование и декодирование Base64 строк с поддержкой текста и файлов
MQTT Кодек
Кодирование и декодирование пакетов протокола MQTT с детальным анализом полей, Hex-просмотрщиком и конструктором пакетов