CBOR (Concise Binary Object Representation) представляет данные в компактном бинарном формате. CBOR разделяет типы данных на основные и использует первые три бита первого байта для обозначения типа данных. Вот краткий обзор типов данных CBOR и их кодирования:
| Тип данных | Дополнительная информация | Начальный байт (биты) | Описание |
|---|---|---|---|
| Unsigned Integer | Беззнаковое целое число | 0b000 (0x00–0x17) | Значения от 0 до 23 кодируются прямо в байте. Большие значения используют дополнительные байты. |
| Negative Integer | Отрицательное целое число | 0b001 (0x20–0x37) | Значение кодируется как -(n + 1), где n — значение. Аналогично, большие числа требуют дополнительных байтов. |
| Byte String | Последовательность байтов | 0b010 (0x40–0x57) | Указывает длину строки, за которой идут сами байты. |
| Text String | Последовательность UTF-8 символов | 0b011 (0x60–0x77) | Аналогично строке байтов, но содержит текстовые символы. |
| Array | Последовательность элементов | 0b100 (0x80–0x97) | Указывает количество элементов в массиве. |
| Map (Dictionary) | Набор пар ключ-значение | 0b101 (0xA0–0xB7) | Указывает количество пар ключ-значение. |
| Semantic Tag | Тег для семантической аннотации | 0b110 (0xC0–0xD7) | Указывает семантику данных (например, формат даты/времени). |
| Simple Value/Float | Простое значение или число с плавающей точкой | 0b111 (0xE0–0xFF) | Прочие значения, включая логические (true, false), null, undefined, и числа с плавающей точкой. |
0x18 + 1 байт: значения до 255.0x19 + 2 байта: значения до 65535.0x1A + 4 байта: значения до 2^32 - 1.0x1B + 8 байт: значения до 2^64 - 1.0x1F (Длина не определена)-(n + 1).0x20–0x37: значения от -1 до -24.0x38).0x40 + длина строки (до 23 байт).0x58 + 1 байт длины.0x59 + 2 байта длины.0x5A + 4 байта длины.0x5B + 8 байт длины.0x80 + количество элементов (до 23 элементов).0x98 + 1 байт длины.0x99 + 2 байта длины.0x9A + 4 байта длины.0x9B + 8 байт длины.0xA0 + количество пар ключ-значение (до 23 пар).0xB8 + 1 байт длины.0xB9 + 2 байта длины.0xBA + 4 байта длины.0xBB + 8 байт длины.0xC0–0xD7.0xC1 может обозначать дату/время.true, false, null и т. д.):0xF4: false.0xF5: true.0xF6: null.0xF7: undefined.0xFA + 4 байта (32-битное значение).0xFB + 8 байт (64-битное значение).{"key": true, "value": 42}0xA2."key" → текстовая строка длиной 3 → 0x63 + 6B6579 (ASCII).true → простое значение → 0xF5."value" → текстовая строка длиной 5 → 0x65 + 76616C7565 (ASCII).42 → беззнаковое число → 0x18 + 2A.Итоговая последовательность байтов: