Codec CBOR
Codificar y decodificar formato de datos binarios CBOR
Pegue datos CBOR de capturas de red, dispositivos IoT o respuestas API
Datos de ejemplo
Resultado decodificado
Ingrese datos CBOR y haga clic en Decodificar para ver los resultados
Visor de bytes
Ingrese datos JSON válidos para codificar a CBOR
Codificación de longitud del contenedor
- Compact: Usa bytes mínimos (fixmap/fixarray para ≤23 elementos)
- Explicit 16-bit: Siempre usa longitud de 2 bytes (prefijo 0xB9/0x99)
- Explicit 32-bit: Siempre usa longitud de 4 bytes (prefijo 0xBA/0x9A)
- Indefinite: Usa longitud indefinida con código de fin (0xBF...0xFF)
JSON Examples
Resultado codificado
Ingrese datos JSON y haga clic en Codificar para generar CBOR
Visor de bytes
Estadísticas de codificación
Referencia de tipos de datos CBOR
| Tipo mayor | Nombre del tipo | Bytes de encabezado | Descripción |
|---|---|---|---|
| 0 | Entero sin signo | 0x00-0x1B | Enteros no negativos de 0 a 2^64-1 |
| 1 | Entero negativo | 0x20-0x3B | Enteros negativos de -1 a -2^64 |
| 2 | Cadena de bytes | 0x40-0x5B | Datos binarios crudos de longitud arbitraria |
| 3 | Cadena de texto | 0x60-0x7B | Cadenas de texto codificadas en UTF-8 |
| 4 | Array | 0x80-0x9B | Colección ordenada de elementos de datos |
| 5 | Map | 0xA0-0xBB | Pares clave-valor (objeto) |
| 6 | Tag | 0xC0-0xDB | Etiqueta semántica para tipos extendidos |
| 7 | Simple/Flotante | 0xE0-0xFB | Booleano, null, undefined y números de punto flotante |
Documentación del protocolo CBOR
¿Qué es CBOR?
CBOR (Concise Binary Object Representation) es un formato de serialización de datos binarios definido en RFC 8949. Diseñado como una alternativa compacta a JSON, CBOR codifica datos estructurados en formato binario eficiente manteniendo la compatibilidad con el modelo de datos JSON. El formato es auto-descriptivo, lo que significa que los decodificadores pueden analizar datos sin definiciones de esquema externas. CBOR fue diseñado específicamente para entornos restringidos como dispositivos IoT y sistemas embebidos donde el ancho de banda y la potencia de procesamiento son recursos limitados.
Estructura de codificación binaria
Cada elemento de datos CBOR comienza con un solo byte que contiene dos campos: el tipo mayor (3 bits) e información adicional (5 bits). El tipo mayor determina la categoría de datos (entero, cadena, array, etc.), mientras que la información adicional indica la longitud del argumento o contiene valores pequeños directamente. Este diseño de encabezado compacto significa que valores simples como enteros pequeños solo requieren un byte.
| Info adicional | Significado |
|---|---|
| 0-23 | Valor codificado directamente (0-23) |
| 24 | Sigue 1 byte sin signo |
| 25 | Siguen 2 bytes sin signo (big-endian) |
| 26 | Siguen 4 bytes sin signo (big-endian) |
| 27 | Siguen 8 bytes sin signo (big-endian) |
| 31 | Longitud indefinida (para cadenas, arrays, maps) |
Opciones de codificación de longitud del contenedor
CBOR proporciona flexibilidad en cómo se codifican las longitudes de contenedores (arrays y maps). Aunque todas las codificaciones válidas producen datos semánticamente idénticos, la representación binaria difiere. Esta herramienta ofrece cuatro modos de codificación para diferentes requisitos del sistema.
Ejemplo de codificación: {"name":"Alice","age":30}
El mismo objeto JSON puede codificarse de múltiples formas válidas:
| Modo | Bytes de cabecera | Descripción |
|---|---|---|
| Compact | A2 ... | 0xA2 = fixmap(2), codificación mínima |
| Explicit 16-bit | B9 00 02 ... | 0xB9 = map16, sigue longitud de 2 bytes |
| Explicit 32-bit | BA 00 00 00 02 ... | 0xBA = map32, sigue longitud de 4 bytes |
| Indefinite | BF ... FF | 0xBF = map indefinido, termina con 0xFF |
Las cuatro codificaciones decodifican a JSON idéntico. Elija compacto para eficiencia de tamaño, longitudes explícitas para compatibilidad de protocolo, o indefinido para escenarios de streaming.
Comparación CBOR vs JSON
Ambos formatos representan el mismo modelo de datos lógico pero sirven propósitos diferentes. CBOR prioriza la codificación compacta y la eficiencia de procesamiento, mientras que JSON enfatiza la legibilidad humana y la interoperabilidad universal basada en texto.
- Tamaño codificado más pequeño (30-50% típicamente)
- Soporte nativo de datos binarios
- Análisis y codificación más rápidos
- Tags semánticos integrados para fechas, URIs, etc.
- Legible y editable por humanos
- Soporte universal navegador/lenguaje
- Depuración y registro más fáciles
Aplicaciones comunes
- Comunicación de dispositivos IoT y transmisión de datos de sensores
- Protocolos de autenticación WebAuthn/FIDO2
- Seguridad COSE (firma y cifrado de objetos CBOR)
- Mensajería CoAP (protocolo de aplicación restringida)
- Configuración y almacenamiento de datos de sistemas embebidos
Tags semánticos
Los tags CBOR proporcionan significado semántico a los elementos de datos. Los tags son envoltorios opcionales que indican cómo debe interpretarse el valor encapsulado, permitiendo extensiones de tipo más allá de los tipos de datos básicos.
| Número de tag | Significado semántico |
|---|---|
| 0 | Cadena de fecha/hora estándar (RFC 3339) |
| 1 | Fecha/hora basada en época (timestamp Unix) |
| 2 | Número positivo grande |
| 3 | Número negativo grande |
| 32 | Referencia URI |
| 55799 | CBOR auto-descriptivo (número mágico) |
Herramientas Relacionadas
Herramienta Protocol Buffers
Codificador/decodificador Protocol Buffers en línea. Analizar esquemas .proto, codificar JSON a binario, o decodificar binario a JSON
Formateador JSON
Formatee y valide datos JSON para mejorar la legibilidad y depuración
Codificador/Decodificador Base64
Codifique y decodifique rápidamente cadenas Base64, compatible con conversión de texto y archivos
Codec MQTT
Codificar y decodificar paquetes del protocolo MQTT con análisis detallado de campos, visor hex y constructor de paquetes