将字符串转换为缓冲节点

Ani*_*ket 56 node.js

我正在使用一个函数库,它在函数调用时返回缓冲区的toString.

确切的代码是

return Buffer.concat(stdOut).toString('utf-8');
Run Code Online (Sandbox Code Playgroud)

但我不想要它的字符串版本.

我只想要缓冲区

那么如何将字符串转换回缓冲区.

像是的东西

var bufStr = Buffer.concat(stdOut).toString('utf-8');
//convert bufStr back to only Buffer.concat(stdOut).
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

我试过了

var buf = Buffer.from(bufStr, 'utf-8');
Run Code Online (Sandbox Code Playgroud)

但它抛出utf-8不是一个功能.当我做

var buf = Buffer.from(bufStr);
Run Code Online (Sandbox Code Playgroud)

它抛出TypeError:这不是一个类型化的数组.

谢谢

Joh*_*nck 102

你可以做:

var buf = Buffer.from(bufStr, 'utf8');
Run Code Online (Sandbox Code Playgroud)

但这有点傻,所以另一个建议是从被调用函数中复制最少量的代码,以允许自己访问原始缓冲区.根据该库的详细信息,这可能非常简单或相当困难.

  • @Aniket:可能你的Node版本较旧.尝试只使用`Buffer(bufStr)`直到升级. (6认同)
  • `Buffer.from(str)` 就足够了,因为默认为 'utf8'。https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_string_encoding (4认同)

mid*_*ido 8

注意:只需将John Zwinck的评论作为答案重新发布.

一个问题可能是您使用的是较旧版本的Node(目前,我无法升级,代码库受到攻击v4.3.1).这里简单的解决方案是,使用弃用的方式:

new Buffer(bufferStr)
Run Code Online (Sandbox Code Playgroud)


Emd*_*won 7

您可以Buffer.from()用来将字符串转换为缓冲区。可以在这里找到更多信息

var buf = Buffer.from('some string', 'encoding');
Run Code Online (Sandbox Code Playgroud)

例如

var buf = Buffer.from(bStr, 'utf-8');
Run Code Online (Sandbox Code Playgroud)