gpt4 book ai didi

javascript - 尝试通过 javascript 中的 .charCodeAt 将此凯撒密码 arr 重新转换为字符

转载 作者:行者123 更新时间:2023-12-02 08:08:07 25 4
gpt4 key购买 nike

我正在研究一个凯撒密码问题,一直在用卡车运走,但肯定无法尝试将这个数组重新转换回字符。

我试过这样的事情:

document.write(eval('String.fromCharCode('++')'));

document.write(String.fromCharCode.apply(null, solved));

和其他几个运气不好的人。有什么想法吗?我真的很想避免回到绘图板,因为这已经很接近了......

感谢观看!

function rot13(str) { // LBH QVQ VG!
var solved = [];
var arr = str.split("");
for (var i=0; i<arr.length; i++) {
solved.push(arr[i].charCodeAt(0));
if (solved[i]>65 && solved[i]<91){
solved[i]-=13;
}
String.fromCharCode(solved[i]);
}

return solved.join("");}

rot13("SERR PBQR PNZC");

最佳答案

您不能无条件地减去 13:您必须检查代码点是否低于 78。 (如果低于78,那么你需要加13而不是减去,否则最后会得到错误的字符)

document.write 是 document.wrong。使用更现代、更不易混淆的东西。此函数尝试写入当前文档。如果文档已经处理过,文档将被替换为包含您的参数的空白文档。你不想要那个;请改用正确的 DOM 方法。 (也不要使用 eval)

你在做什么

String.fromCharCode(solved[i]);

但那是一条不做任何事情的独立行 - 您可能打算将其结果分配给 solved[i]

为了避免让自己感到困惑,在您真正拥有已解决的 Angular 色之前,可能不要推送到 solved 数组。

function rot13(str) {
const solved = [];
const arr = str.split("");
for (let i = 0; i < arr.length; i++) {
const initialCharCode = arr[i].charCodeAt(0);
if (initialCharCode > 65 && initialCharCode < 91) {
const rotCode = initialCharCode < 78 ? initialCharCode + 13 : initialCharCode - 13;
solved.push(String.fromCharCode(rotCode));
} else {
solved.push(String.fromCharCode(initialCharCode));
}
}
return solved.join("");
}

console.log(rot13("SERR PBQR PNZC"));

关于javascript - 尝试通过 javascript 中的 .charCodeAt 将此凯撒密码 arr 重新转换为字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49594800/

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