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

如何在PHP中实现与Node.js Buffer.from方法相同的执行效果

问题原因
  • 编码对象差异是核心问题:Node.js 中 bufname.toString('base64') 是直接对 Buffer.from(tagVal,'utf8') 得到的原始UTF-8二进制字节做Base64编码;而你编写的PHP代码中,传给 base64_encode() 的是 bin2hex($name) 输出的十六进制字符串,而非原始字符串的二进制内容,编码对象完全不同,结果必然不一致。
  • 额外说明:Buffer.from(tagVal,'utf8') 和 bin2hex($name) 底层读取的字节本身是一致的,仅展示格式有区别:Node.js输出Buffer时会自动给字节的十六进制表示加空格分隔,PHP的bin2hex输出的是连续无分隔的十六进制字符,这不是导致Base64结果错误的原因。
解决方案

直接对原始字符串做Base64编码即可复现Node.js的运行结果,完整复现代码如下:

<?php
$name = "Bobs Basement Records";

// 复现Node.js的<Buffer ...>格式输出
$hex = bin2hex($name);
echo '<Buffer ' . implode(' ', str_split($hex, 2)) . '>' . PHP_EOL;

// 复现原始字符串输出
echo $name . PHP_EOL;

// 复现base64编码结果,直接编码原始字符串即可
echo base64_encode($name) . PHP_EOL;
?>

上述代码运行后输出结果与你提供的Node.js运行结果完全一致。

内容的提问来源于stack exchange,提问作者Eng.Wagdi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:45:03