CoderTools

CBOR 编解码器

CBOR 二进制数据格式编码与解码

🔒 100% 本地处理您输入的数据完全在浏览器中处理,不会上传到任何服务器。

粘贴从网络抓包、物联网设备或 API 响应中获取的 CBOR 数据

点击插入示例数据

解码结果

输入 CBOR 数据并点击解码查看结果

CBOR 数据类型参考

主类型 类型名称 头部字节 说明
0无符号整数0x00-0x1B0 到 2^64-1 的非负整数
1负整数0x20-0x3B-1 到 -2^64 的负整数
2字节串0x40-0x5B任意长度的原始二进制数据
3文本串0x60-0x7BUTF-8 编码的文本字符串
4数组0x80-0x9B有序数据项集合
5映射0xA0-0xBB键值对(对象)
6标签0xC0-0xDB扩展类型的语义标签
7简单值/浮点0xE0-0xFB布尔值、null、undefined 和浮点数

CBOR 协议文档

CBOR 简介

CBOR(简明二进制对象表示)是 RFC 8949 定义的二进制数据序列化格式。作为 JSON 的紧凑替代方案,CBOR 将结构化数据编码为高效的二进制形式,同时保持与 JSON 数据模型的兼容性。该格式具有自描述特性,解码器无需外部模式定义即可解析数据。CBOR 专为物联网设备和嵌入式系统等资源受限环境设计,在这些场景中带宽和处理能力都是宝贵资源。

二进制编码结构

每个 CBOR 数据项都以一个包含两个字段的字节开始:主类型(3 位)和附加信息(5 位)。主类型决定数据类别(整数、字符串、数组等),附加信息指示参数长度或直接保存小值。这种紧凑的头部设计意味着像小整数这样的简单值只需要一个字节。

附加信息 含义
0-23值直接编码(0-23)
24后跟 1 字节无符号数
25后跟 2 字节无符号数(大端序)
26后跟 4 字节无符号数(大端序)
27后跟 8 字节无符号数(大端序)
31不定长度(用于字符串、数组、映射)

容器长度编码选项

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 优势
  • 人类可读可编辑
  • 浏览器和编程语言普遍支持
  • 调试和日志记录更方便

常见应用场景

  • 物联网设备通信和传感器数据传输
  • WebAuthn/FIDO2 身份认证协议
  • COSE(CBOR 对象签名与加密)安全应用
  • CoAP(受限应用协议)消息传递
  • 嵌入式系统配置和数据存储

语义标签

CBOR 标签为数据项提供语义含义。标签是可选的包装器,指示应如何解释封装的值,从而实现基本数据类型之外的类型扩展。

标签编号 语义含义
0标准日期时间字符串(RFC 3339)
1基于纪元的日期时间(Unix 时间戳)
2正大整数
3负大整数
32URI 引用
55799CBOR 自描述(魔数标记)

快捷菜单

暂无访问记录