【问题标题】:how to use node js buffer with a conversion map如何使用带有转换映射的节点 js 缓冲区
【发布时间】:2017-09-05 15:41:40
【问题描述】:

我正在关注关于 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)。我只是不确定它会改变它。

提前感谢您的帮助!

【问题讨论】:

    标签: node.js buffer fs


    【解决方案1】:

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

    tag 将为您提供 buffer.sliced 值,而 tag.length 将拥有该数字。

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

    所以如果 buffer.slice(-4, -1) 的结果是“文本”,那么循环会将 tag.length 视为 4,而 i 将考虑最多 3 个(i

    所以,conversionMap 是一个进行 Key= 值映射的映射。

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

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

    【讨论】:

    • 我理解那部分,我不理解的部分是conversionMap 是如何工作的,或者它的不同值意味着什么。
    • 我相信它不是默认的。我认为它已在代码中的某处定义。
    • 是的,它是一个变量,它是在我说const conversionMap 时定义的,我也可以说const fooBar,它仍然可以工作。我想知道的是它是如何工作的,它的内容是什么意思(我想知道为什么我运行代码时'88': '65', '89': '66', '90': '67', = ABC
    • 是的,我看到了。所以它正在做的是。它是一张地图。如果 Key 是 '88' ,那么它会将值设为 '65' 。
    • 哦,我明白了。现在这部分问题是有道理的,但是我仍然不明白 65 = A.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2012-12-15
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    相关资源
    最近更新 更多