如何使用带有转换映射的节点 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 缓冲区的主要内容,如果未能解决你的问题,请参考以下文章
如何使用带有 Typescript 的泛型将中继(graphql)连接映射到边缘节点
如何在带有 next.js 的数组映射函数中使用 if 语句