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

Node.js中JSON格式化输出时如何将Buffer对象转为十六进制字符串

方案1:使用JSON.stringify的replacer参数(通用推荐)

JSON.stringify原生支持传入替换函数作为第二个参数,递归遍历对象所有属性时自动识别Buffer实例,转成十六进制字符串,直接满足美观打印需求:

const buf = Buffer.from("abcdefgh");

// 自定义替换逻辑
const bufferToHexReplacer = (key, value) => {
  // 匹配Buffer实例,返回十六进制字符串
  if (value instanceof Buffer) {
    return value.toString('hex');
  }
  // 兼容已经被序列化为{type:"Buffer", data: [...]}格式的普通对象
  if (value && typeof value === 'object' && value.type === 'Buffer' && Array.isArray(value.data)) {
    return Buffer.from(value.data).toString('hex');
  }
  // 其余属性正常返回
  return value;
};

// 第三个参数4为缩进空格数,实现美观打印
console.log(JSON.stringify({a:1,b:2,c:{d:1,e:buf}}, bufferToHexReplacer, 4));

运行上述代码输出结果和要求的格式完全一致。


方案2:修改Node.js控制台默认打印逻辑

如果你不需要输出标准JSON字符串,只是在控制台直接打印对象时希望Buffer显示为十六进制,可以修改util.inspect的自定义渲染规则:

const util = require('util');
const buf = Buffer.from("abcdefgh");

// 全局修改Buffer的控制台展示格式
Buffer.prototype[util.inspect.custom] = function () {
  return `"${this.toString('hex')}"`;
};

// 直接打印对象即可看到效果
console.log({a:1,b:2,c:{d:1,e:buf}});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:45:03