gpt4 book ai didi

Node.js:不同的缓冲区输出

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:56 25 4
gpt4 key购买 nike

我已经使用缓冲区解码了 Base64 编码的字符串,现在我注意到一些有趣:

这工作正常,将解码后的字符串输出为 utf8

decoded = new Buffer(data.content, 'base64')
console.log('Decoded:' + decoded);
// outputs content of a markdown file

但是,这会输出十六进制字符:

decoded = new Buffer(data.content, 'base64')
console.log(decoded);
// outputs<Buffer 23 20 33 30 32 34 20 66 ...>

这是为什么或者我做错了什么?输出不应该是一样的吗?

最佳答案

console.log 的参数在 Node.js 中使用 util.format 进行内部格式化。 (参见https://github.com/joyent/node/blob/v0.11.4/lib/console.js第52行)

当您调用 console.log(obj); 时,obj 会在内部直接传递给 util.format。当您调用 console.log('Decoded: '+obj) 时,字符串连接会强制首先在 obj 上调用 .toString() ,然后将生成的组合字符串在内部传递给 util.format

因此,在第一种情况下,node.js 正在格式化一个 String 对象,在第二种情况下,它直接格式化一个 Buffer 对象。

关于Node.js:不同的缓冲区输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17835003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com