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

how to use node js buffer with a conversion map

我正在学习有关 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

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

在此先感谢您的帮助!

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

tag 会给你 buffer.sliced 值和 tag.length 将有那个数字。

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

因此,如果 buffer.slice(-4, -1) 结果为 "text",则循环将考虑 tag.length 为 4,i 将最多考虑 3 (i < tag.length).

因此,conversionMap 是一个进行 Key= value 映射的映射。

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

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