如何在NodeJS中读取缓冲区的前n个字节并将其转换为字符串?

时间:2019-06-18 18:56:39

标签: arrays node.js string character-encoding buffer

我有一个字符串,该字符串是通过网络发送的,并作为缓冲区到达我的服务器。它已经格式化为我自己的自定义协议(理论上还没有实现)。我想将前n个字节用于标识协议的字符串。

我已经完成:

data.toString('utf8');

在整个缓冲区上,但这只是给我整个包作为字符串,这不是我想要实现的。

收到消息后,如何将字节的子集转换为字符串?

预先感谢

2 个答案:

答案 0 :(得分:2)

Buffer.toString()方法接受startend参数,您可以使用它们来切出所需的子字符串子集。根据您的实现,这可能比分配答案中建议的分配新的中介Buffer更快。

查看Node的Buffer.toString()方法以获取更多信息。

答案 1 :(得分:1)

了解如何。

您必须通过在原始缓冲区上调用方法copy来将所需的字节数复制到另一个缓冲区中,即:

sourceBuffer.copy(targetBuffer, targetStartIndex, sourceStartIndex, sourceEndIndex)

这将为您的targetBuffer提供所需的数据,然后可以调用toString()或任何其他方法将缓冲区数组转换为所需的数据类型。