如何使用带有转换映射的节点 js 缓冲区

Posted

技术标签:

【中文标题】如何使用带有转换映射的节点 js 缓冲区【英文标题】:how to use node js buffer with a conversion map 【发布时间】: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)。我只是不确定它会改变它。

提前感谢您的帮助!

【问题讨论】:

【参考方案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.

以上是关于如何使用带有转换映射的节点 js 缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Node.js 创建带有缓冲区的读取流

如何使用带有 Typescript 的泛型将中继(graphql)连接映射到边缘节点

如何使用节点js在mongodb中映射两个集合[重复]

如何在带有 next.js 的数组映射函数中使用 if 语句

如何在 Python 中将“托管缓冲区”转换为 Callable

如何在 WebGL 中实现阴影映射?