如何将节点 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 中查看以供参考。
我正在学习有关 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 中查看以供参考。