我正在使用一个库,它在调用函数时返回缓冲区的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"));