亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

尋求凱撒密碼的解釋

尋求凱撒密碼的解釋

慕俠2389804 2023-10-14 09:54:01
在嘗試(但失?。閵W丁項目練習編寫凱撒密碼作業后,我最終屈服并查找答案。不過,我不太明白。我正在尋求對每一行的作用及其工作原理的解釋。我復制的代碼對每一行的作用有一些簡短的描述,但我仍然不明白它是如何工作的。const caesar = function (str, amount) {        // Wrap the amount        if (amount < 0) {          return caesar(str, amount + 26);        }              // Make an output variable        var output = "";              // Go through each character        for (var i = 0; i < str.length; i++) {          // Get the character we'll be appending          var c = str[i];                // If it's a letter...          if (c.match(/[a-z]/i)) {            // Get its code            var code = str.charCodeAt(i);                  // Uppercase letters            if (code >= 65 && code <= 90) {              c = String.fromCharCode(((code - 65 + amount) % 26) + 65);            }                  // Lowercase letters            else if (code >= 97 && code <= 122) {              c = String.fromCharCode(((code - 97 + amount) % 26) + 97);            }          }                // Append          output += c;        }              // All done!        return output;      };
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

第一個 if 語句:

if (amount < 0) {
  return caesar(str, amount + 26)
}

通過調用自身來確保移位量為 0 及以上,直到達到 0 為止。然后下面的行循環遍歷整個字符串中的所有字符。

for (var i = 0; i < str.length; i++) {

對于每個字符,它使用一種稱為正則表達式的東西檢查它是否是一個字母(谷歌了解更多信息)

if (c.match(/[a-z]/i)) {

線路

var code = str.charCodeAt(i);

獲取表示字符串中位置“i”處的字符的數字。數字是計算機表示字母和其他字符的方式。大寫和小寫字符有兩個完全不同的數字與之關聯。這就是下面兩個 if 語句的用途。我將解釋小寫字母的情況,您應該也能看到大寫字母的工作原理。

c = String.fromCharCode(((code - 65 + amount) % 26) + 65);

首先從數字中減去 65。這是因為第一個小寫字母“a”的值為 65。之后它將結果移動“amount”。% 符號可能看起來很奇怪。但它所做的只是將兩側相除并返回“其余部分”,即剩余數。例如如果我們寫:

5 % 2

它等于 1。這樣做是為了“循環”數字并將其保持在 0 到 26 之間。之后,它加回 65 并將數字轉回字符。最后一行:

output += c;

將字符添加到結果字符串中。希望這對您有所幫助!


查看完整回答
反對 回復 2023-10-14
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號