PHP的base64_encode结果不类似于JavaScript的编码结果

代码片段:

PHP:

$shaVal = '59bc125840733ea828f42e276661b01e177f1414'; $enc = base64_encode(pack('H*', $shaVal)); echo $enc; //prints => WbwSWEBzPqgo9C4nZmGwHhd/FBQ= 

在Javascipt我使用buffer npm模块

 let Buffer = require('buffer').Buffer; let shaVal = '59bc125840733ea828f42e276661b01e177f1414'; //function similar to php's pack() and returns binary data let bData = Buffer.from(shaVal, 'hex').toString(); console.log('bData ', bData) //encode with base64 let val64 = Buffer.from(bData, 'binary').toString('base64'); console.log('base 64 encode ', val64) //prints => Wf0SWEBzPv0o/S4nZmH9Hhd/FBQ= 

我怎样才能得到完全相同的输出由PHP打印?

注意:这两个选项显示二进制数据为Y X@ s> ( .'fa

这是因为PHP包返回string,在JavaScript缓冲区返回数组。

这个答案可能有所帮助: https : //stackoverflow.com/a/41962257/3086531