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

问题描述 投票:0回答:5

我正在使用一个库,它在调用函数时返回缓冲区的 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 :这不是一个类型化数组。

谢谢

node.js
5个回答
243
投票

你可以这样做:

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

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


19
投票

您可以使用

Buffer.from()
将字符串转换为缓冲区。有关这方面的更多信息,请参阅此处

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

例如

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

16
投票

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

一个问题可能是您使用的是旧版本的 Node(目前,我无法升级,代码库被

v4.3.1
击中)。这里简单的解决方案是使用已弃用的方式:

new Buffer(bufferStr)

注意#2:这是针对旧版本中的人,对于他们来说

Buffer.from
不起作用


4
投票

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

var responseData=x.toString();

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

最后

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

0
投票

我认为 npm 包一定已经更新了。因为下面的函数

let buf = Buffer.from(contractCode, 'utf-8')

似乎对我来说效果很好。 我什至通过做交叉验证

console.log(String(buf))

确实之前的字符串正在返回给我

© www.soinside.com 2019 - 2024. All rights reserved.