跳到主内容
UniKit

CBOR 查看

在浏览器本地解析 CBOR(RFC 8949)二进制数据:支持主要类型 0–7、不定长数组 / 映射 / 字符串、半精度浮点与 tag(日期、大整数、嵌套 CBOR),按类型、字节长度与偏移展示可折叠的树。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

解析结果

粘贴十六进制字节后自动解析

选中节点

粘贴十六进制字节后自动解析

JSON 视图

字节串以 h'…' 表示,tag 会包一层 { tag, value },超出安全范围的整数以字符串表示。

这个工具能做什么

  • 解析物联网设备、COSE 消息或 WebAuthn 相关的 CBOR 二进制数据,把一串十六进制还原成可读的树。
  • 排查「设备上报的数据看不懂」:按类型、字节长度和偏移定位每一项,确认是不是把嵌套结构读错了层级。
  • 把 CBOR 转成 JSON 再交给脚本处理,同时保留 tag 信息(如 tag 1 的时间戳会包成 { tag, value })。
  • 验证自己生成的编码是否规范:不定长容器、半精度浮点、大整数 tag 2/3 都能正确解析出来。

示例

输入

a2 61 61 01 61 62 82 02 03

输出

{
  "a": 1,
  "b": [
    2,
    3
  ]
}

这是真实解析结果:a2 表示 2 项的映射,61 61 是长度 1 的文本串 "a",01 是整数 1,61 62 是 "b",82 是 2 项数组,02 03 是整数 2 和 3。共 9 字节、5 个节点。

常见问题

为什么我的数据报「不是合法的 CBOR 数据」?

三种常见原因:附加信息用了保留值 28–30;文本串的字节不是合法 UTF-8(CBOR 的文本串必须是 UTF-8,二进制数据要用字节串);数据被截断。另外 0xFF(break)只能出现在不定长容器内部,单独出现也会报错。

字节串和文本串有什么区别?

CBOR 里主要类型 2 是字节串、类型 3 是文本串,前者可以装任意字节,后者必须是合法 UTF-8。JSON 视图里字节串写成 `h'…'` 十六进制形式,因为 JSON 字符串装不下任意字节。看到 h'…' 说明这一项本来就是二进制数据,不是解码失败。

tag 是怎么展示的?

树里 tag 会单独占一层节点并显示标签号,转 JSON 时包成 `{ tag: 编号, value: 内容 }`。已知的常用标签会给出可读名称,比如 0 是 RFC 3339 日期字符串、1 是基于 epoch 的时间、2/3 是正/负大整数、24 是嵌套的 CBOR 数据。

它和 JSON 解析、bencode 解码有什么区别?

CBOR 是二进制格式,同样大小的数据比 JSON 紧凑,而且支持字节串、浮点、标签等 JSON 没有的类型,所以能表达的信息更多;bencode 是 BitTorrent 专用,只有四种类型且字典键必须有序。数据来源是 IoT、COSE、WebAuthn 就用这个,种子文件用 bencode 解码。

解析会联网吗?

不会。解码器完全在浏览器本地运行,粘贴的十六进制不会离开页面,也不发任何网络请求。

关键词:cborrfc 8949binarydecodehextagbignumCBOR 解码二进制解析序列化十六进制物联网

同类工具