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

Node.js中Buffer.from(tag_name, "hex")和toString("hex")写法的区别

Node.js中两种Buffer.from写法的逻辑差异

核心区别

二者是方向完全相反的编码转换流程:

  • 前者是把普通字符串按UTF-8编码转成二进制Buffer,再把Buffer内容序列化为十六进制字符串
  • 后者是把输入字符串直接当作十六进制编码内容,解码为对应的二进制Buffer

逐行拆解测试代码逻辑

测试用例中输入的tag_name = "79"是普通UTF-8字符串,两个写法的执行流程分别如下:

1. Buffer.from(tag_name).toString("hex") 执行步骤

  1. 调用Buffer.from(tag_name)时,未指定第二个编码参数,默认按UTF-8编码把输入字符串转成二进制Buffer:
    • 字符'7'的UTF-8编码值为十六进制0x37
    • 字符'9'的UTF-8编码值为十六进制0x39
    • 得到的中间Buffer为 <Buffer 37 39>
  2. 调用.toString("hex")会把Buffer的每个字节转换为2位十六进制字符串拼接,最终得到结果"3739",也就是输出的tag_s。

2. Buffer.from(tag_name, "hex") 执行步骤

调用时指定了第二个参数"hex",含义是把输入的字符串当作十六进制编码的内容,解码为二进制Buffer:

  1. 输入的字符串"79"会被识别为两位十六进制数值,转换为十进制是121
  2. 对应二进制值的Buffer为 <Buffer 79>,该值正好是UTF-8编码中小写字母'y'的编码,所以直接输出这个Buffer会显示为y,也就是拿到的tag_ss。

快速记忆区分

  • 加"hex"作为Buffer.from的第二个参数:输入是十六进制字符串,要转成原始二进制Buffer
  • 调用.toString("hex"):输入是原始二进制Buffer,要转成十六进制格式的字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:36:04