如何将节点js缓冲区与转换映射一起使用

时间:2017-04-10 14:25:52

标签: node.js buffer fs

我正在关注nodejs的教程。在本教程中,它有这个例子:

const fs = require('fs');

const conversionMap = {
  '88': '65',
  '89': '66',
  '90': '67',
};

fs.readFile(__filename, (err, buffer) => {
  let tag = buffer.slice(-4, -1);

  for(let i=0;i < tag.length; i++) {
    tag[i] = conversionMap[tag[i]];
  }

  console.log(buffer.toString());
});

// TAG: XYZ

我很确定我知道这个例子是做什么的。它正在读取文件,然后将其分配给缓冲区并将其写出。我知道它通过TAG找到了slice(-4, -1)(标签从底部开始向上并且结束)。我只是不确定它会改变它。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

是的,它每次都会改变,因为它正在运行循环并迭代 i 的值。

标记将为您提供 buffer.sliced 值, tag.length 将包含该数字。

因此 i 值将初始化为0,然后它将运行循环,直到达到 tag.length

因此,如果 buffer.slice(-4,-1)导致“text”,那么循环将 tag.length 视为4和将考虑最多3(i&lt; tag.length)。

因此, conversionMap 是一个执行Key =值映射的地图。

在这种情况下, 88 是键,相应的值为 65 。 但是,它正在进行字符的十进制值(即i)的转换。

您可以在ASCII表中查看,以供参考。