我正在使用一个库,它在调用函数时返回缓冲区的 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 is not a function 。 当我这样做时
var buf = Buffer.from(bufStr);
它抛出 TypeError :这不是一个类型化数组。
谢谢
你可以这样做:
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"));
我认为 npm 包一定已经更新了。因为下面的函数
let buf = Buffer.from(contractCode, 'utf-8')
似乎对我来说效果很好。 我什至通过做交叉验证
console.log(String(buf))
确实之前的字符串正在返回给我