You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中将十六进制编码的CBOR字符串解码为可读文本?

如何在JavaScript中正确解码十六进制CBOR字符串

问题场景

我有一段十六进制编码的CBOR字符串,使用cbor.diagnose()方法解码时,得到的是诊断格式的输出,无法解析出预期的可读文本,但CBOR解码工具可以得到正确的可读内容。之前的代码如下:

buf = new Uint8Array(itxt.match(/.{1,2}/g).map(byte => parseInt(byte, 16)))
data = await cbor.diagnose(buf)
console.log(data)

问题原因

cbor.diagnose()的作用是生成CBOR数据的诊断性描述文本,并非直接将CBOR解析为JavaScript对象,因此无法直接得到可读的键值对内容。需要使用CBOR库的解析方法将数据转换成JS对象后,才能获取可读文本。

解决方案

使用cbor库的decodeFirst()方法(推荐,因为CBOR通常是单一顶级值)将CBOR数据解析为JavaScript对象,之后即可直接访问或格式化输出可读内容。

步骤1:安装依赖

首先安装官方CBOR库:

npm install cbor

步骤2:完整解码代码

import cbor from 'cbor'; // 或使用CommonJS:const cbor = require('cbor');

// 你的十六进制CBOR字符串
const hexCbor = '821a0485c1e3ae581c368bedeac13b8f1fbc30cdaadb987635ff95e88960b1ea216e3f96faa14f74656e7461696c656761637931323201581c3dc002874772549f7758066ae025b92a4dab66c57d187dd78821b673a34a6c746c6d6b7973363535014a6c746c6d6b7973383333014b6c746c6d6b79733238393901581c482fb00dc32186a4c587dca2df3c7cf2bc455332ab581d51967306e1a1444d4f4149190743581c49da502b625d310ad3a742c1e747c0027e83426f8717180b21c871b1a14959524941433136373401581c4b92de6b0398970dcafe4aee5329e591819ca11aa3dc163a981c7f99a54f4d654d654f66546865446179363534014f4d654d654f6654686544617937343001504d654d654f665468654461793132343001504d654d654f665468654461793133373801504d654d654f665468654461793234343901581c561696ab9e70db98f8ff5c12f0fdbd837bd1b95d84c748b04ede8fbaa14441504f43190226581c5993061274861159508aef767fc0ccd8b8a9b836171a989ad543fa1fa74f44446f53546573744d696e74373432015044446f53546573744d696e7431323132015044446f53546573744d696e7431333238015044446f53546573744d696e7432333130015044446f53546573744d696e7432393239015044446f53546573744d696e7433303037015044446f53546573744d696e743330313701581c5cf33cfea1b37c289060f55fa09c1fb3b9cb6972e40d9ed2f94a5adaa14f484d5072696f4d6f6e73746572313901581c9b542bc33521163a7ff3a05d1df1bcc0c0ec6a0638337e4b2870f6eaa153496e74726f76657274736d636172643034303201581caaf1f848b36940b0703f43f8d406b815132efe64fccb34bc30f993a0a14f466c7566667957686974656c69737401581cc76975c66380ad2bcdf6b465b3b0df34bdd76112046979b9a834364fa1534f4e434841494e20534b554c4c20233038353301581cd79181749db228d10c98501a7e1728585780bcf133b7b3df953a9017a24e496e74726f766572747332313135014e496e74726f76657274733436383901581cdd589bbcfa48c9a133a22e205da33a5d07ef79dac1f8d5d8067b1004a158187768657265734472696c6c646f54686557616c646f39353301581cf8ed2f8e4fdc992644710e45be7fdc4a556b7517ee2956414b5c2b25a14d434e4654536c6162733032373601';

// 将十六进制字符串转换为Uint8Array
const buf = new Uint8Array(hexCbor.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));

// 解析CBOR为JS对象
async function decodeCbor() {
  try {
    const decoded = await cbor.decodeFirst(buf);
    // 输出可读的格式化文本
    console.log(JSON.stringify(decoded, null, 2));
  } catch (err) {
    console.error('解码失败:', err);
  }
}

decodeCbor();

说明

  • cbor.decodeFirst()会解析CBOR数据中的第一个顶级值(这是CBOR数据的常规用法),如果你的数据包含多个顶级值,可以使用cbor.decodeAll()。
  • 解析后的结果是标准JavaScript对象,你可以直接访问其中的键值对,或者用JSON.stringify()格式化输出为可读的JSON文本。

内容的提问来源于stack exchange,提问作者WaerWaters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:40:37