将字符串转换为缓冲区节点



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

确切的代码是

return Buffer.concat(stdOut).toString('utf-8');

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

我只想要缓冲区

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

像如果

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

怎么做?

我试过做

var buf = Buffer.from(bufStr, 'utf-8');

但它抛出utf-8不是一个函数。当我这样做时

var buf = Buffer.from(bufStr);

它抛出类型错误:这不是一个类型化数组。

谢谢

你可以做:

var buf = Buffer.from(bufStr, 'utf8');

但这有点愚蠢,所以另一个建议是从调用的函数中复制最少的代码,以允许自己访问原始缓冲区。 这可能很容易或相当困难,具体取决于该库的详细信息。

可以使用Buffer.from()将字符串转换为缓冲区。有关这方面的更多信息可以在这里找到

var buf = Buffer.from('some string', 'encoding');

例如

var buf = Buffer.from(bStr, 'utf-8');

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

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

new Buffer(bufferStr)

注意#2:这适用于在旧版本中被击中的人,Buffer.from对他们不起作用

这对我有用,你可以像这样更改你的代码

var responseData=x.toString();

var responseData=x.toString("binary");

最后

response.write(new Buffer(toTransmit, "binary"));

最新更新