Codec CBOR
Codificar e decodificar formato de dados binários CBOR
Cole dados CBOR de capturas de rede, dispositivos IoT ou respostas de API
Dados de exemplo
Resultado decodificado
Digite dados CBOR e clique em Decodificar para ver os resultados
Visualizador de bytes
Digite dados JSON válidos para codificar em CBOR
Codificação de comprimento do contêiner
- Compact: Usa bytes mínimos (fixmap/fixarray para ≤23 elementos)
- Explicit 16-bit: Sempre usa comprimento de 2 bytes (prefixo 0xB9/0x99)
- Explicit 32-bit: Sempre usa comprimento de 4 bytes (prefixo 0xBA/0x9A)
- Indefinite: Usa comprimento indefinido com código de término (0xBF...0xFF)
JSON Examples
Resultado codificado
Digite dados JSON e clique em Codificar para gerar CBOR
Visualizador de bytes
Estatísticas de codificação
Referência de tipos de dados CBOR
| Tipo maior | Nome do tipo | Bytes de cabeçalho | Descrição |
|---|---|---|---|
| 0 | Inteiro sem sinal | 0x00-0x1B | Inteiros não negativos de 0 a 2^64-1 |
| 1 | Inteiro negativo | 0x20-0x3B | Inteiros negativos de -1 a -2^64 |
| 2 | String de bytes | 0x40-0x5B | Dados binários brutos de comprimento arbitrário |
| 3 | String de texto | 0x60-0x7B | Strings de texto codificadas em UTF-8 |
| 4 | Array | 0x80-0x9B | Coleção ordenada de elementos de dados |
| 5 | Map | 0xA0-0xBB | Pares chave-valor (objeto) |
| 6 | Tag | 0xC0-0xDB | Tag semântica para tipos estendidos |
| 7 | Simple/Float | 0xE0-0xFB | Booleano, null, undefined e números de ponto flutuante |
Documentação do protocolo CBOR
O que é CBOR?
CBOR (Concise Binary Object Representation) é um formato de serialização de dados binários definido na RFC 8949. Projetado como uma alternativa compacta ao JSON, o CBOR codifica dados estruturados em formato binário eficiente mantendo a compatibilidade com o modelo de dados JSON. O formato é auto-descritivo, o que significa que decodificadores podem analisar dados sem definições de esquema externas. O CBOR foi projetado especificamente para ambientes restritos como dispositivos IoT e sistemas embarcados, onde largura de banda e poder de processamento são recursos limitados.
Estrutura de codificação binária
Cada item de dados CBOR começa com um único byte contendo dois campos: o tipo maior (3 bits) e informação adicional (5 bits). O tipo maior determina a categoria de dados (inteiro, string, array, etc.), enquanto a informação adicional indica o comprimento do argumento ou contém valores pequenos diretamente. Este design de cabeçalho compacto significa que valores simples como inteiros pequenos requerem apenas um único byte.
| Info adicional | Significado |
|---|---|
| 0-23 | Valor codificado diretamente (0-23) |
| 24 | Segue 1 byte sem sinal |
| 25 | Seguem 2 bytes sem sinal (big-endian) |
| 26 | Seguem 4 bytes sem sinal (big-endian) |
| 27 | Seguem 8 bytes sem sinal (big-endian) |
| 31 | Comprimento indefinido (para strings, arrays, maps) |
Opções de codificação de comprimento do contêiner
CBOR oferece flexibilidade na codificação de comprimentos de contêineres (arrays e maps). Embora todas as codificações válidas produzam dados semanticamente idênticos, a representação binária difere. Esta ferramenta oferece quatro modos de codificação para diferentes requisitos de sistema.
Exemplo de codificação: {"name":"Alice","age":30}
O mesmo objeto JSON pode ser codificado de várias formas válidas:
| Modo | Bytes de cabeçalho | Descrição |
|---|---|---|
| Compact | A2 ... | 0xA2 = fixmap(2), menor codificação |
| Explicit 16-bit | B9 00 02 ... | 0xB9 = map16, segue comprimento de 2 bytes |
| Explicit 32-bit | BA 00 00 00 02 ... | 0xBA = map32, segue comprimento de 4 bytes |
| Indefinite | BF ... FF | 0xBF = map indefinido, termina com 0xFF |
Todas as quatro codificações decodificam para JSON idêntico. Escolha compacto para eficiência de tamanho, comprimentos explícitos para compatibilidade de protocolo, ou indefinido para cenários de streaming.
Comparação CBOR vs JSON
Ambos os formatos representam o mesmo modelo de dados lógico, mas servem propósitos diferentes. O CBOR prioriza codificação compacta e eficiência de processamento, enquanto o JSON enfatiza legibilidade humana e interoperabilidade universal baseada em texto.
- Tamanho codificado menor (30-50% tipicamente)
- Suporte nativo a dados binários
- Parsing e codificação mais rápidos
- Tags semânticas integradas para datas, URIs, etc.
- Legível e editável por humanos
- Suporte universal de navegador/linguagem
- Debug e logging mais fáceis
Aplicações comuns
- Comunicação de dispositivos IoT e transmissão de dados de sensores
- Protocolos de autenticação WebAuthn/FIDO2
- Segurança COSE (assinatura e criptografia de objetos CBOR)
- Mensagens CoAP (protocolo de aplicação restrita)
- Configuração e armazenamento de dados de sistemas embarcados
Tags semânticas
As tags CBOR fornecem significado semântico aos elementos de dados. Tags são wrappers opcionais que indicam como o valor encapsulado deve ser interpretado, permitindo extensões de tipo além dos tipos de dados básicos.
| Número da tag | Significado semântico |
|---|---|
| 0 | String de data/hora padrão (RFC 3339) |
| 1 | Data/hora baseada em época (timestamp Unix) |
| 2 | Número positivo grande |
| 3 | Número negativo grande |
| 32 | Referência URI |
| 55799 | CBOR auto-descritivo (número mágico) |
Ferramentas Relacionadas
Ferramenta Protocol Buffers
Codificador/decodificador Protocol Buffers online. Analise esquemas .proto, codifique JSON para binário ou decodifique binário para JSON
Formatador JSON
Formate e valide dados JSON para melhorar a legibilidade e depuração
Codificador/Decodificador Base64
Codifique e decodifique strings Base64 rapidamente, suportando conversão de texto e arquivo
Codec MQTT
Codifique e decodifique pacotes do protocolo MQTT com análise detalhada de campos, visualizador hex e construtor de pacotes