gpt4 book ai didi

javascript - 缓冲区使用说明

转载 作者:搜寻专家 更新时间:2023-11-01 00:30:01 24 4
gpt4 key购买 nike

我在 codefights 上找到了这个巧妙的凯撒密码解决方案。我试图了解缓冲区在这里做什么。

b=Buffer
caesarian = (m, n) =>
"" + b([...b(m)].map(x => (n % 26 + x + 7) % 26 + 97))

空字符串可以像那样与类型化数组连接吗?

最佳答案

迭代 Node.js Buffer 一次产生一个字节的数据。对于包含字母数字字符的 Buffer(默认编码为 utf8),这与获取每个字符的 ASCII 码相同:

[...Buffer("hello")] // [ 104, 101, 108, 108, 111 ]

(n % 26 + x + 7) % 26 + 97) 是基于 ASCII 的凯撒密码算法 - 我想您对这部分很熟悉。

所以,这个 block 将字符串解释为一个 ASCII 码数组,并将它们转换为相应的输出:

[...b(m)].map(x => (n % 26 + x + 7) % 26 + 97))

您可以使用字节值数组初始化一个Buffer:

Buffer([97]) // <Buffer 61>

你可以通过将它与一个空字符串连接来获得 JavaScript 中任何内容的字符串表示形式,因此 ""+ b([97])Buffer([97] ).toString(). Buffer#toString 将存储的字节解释为 unicode 字符:

"" + Buffer([97]) // 'a'

因此外层""+ b(/* ... */)的目的是将操作过的ASCII码转回字母数字字符显示。

关于javascript - 缓冲区使用说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40075564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com