我有这个计算 ROT13 的函数。

string function rot13(required string inString) output="false"  {

  var j = 0;
  var k = 0;
  var out = "";
  for (var i = 1; i <= Len(arguments.inString); i++){
    j = asc(Mid(arguments.inString, i, 1));
    if(j >= asc("A") && j <= asc("Z")) {
        j = ((j - 52) % 26) + asc("A");
    }
    else if(j >= asc("a") && j <= asc("z")) {
        j = ((j - 84) % 26) + asc("a");
    }

    out &= Chr(j);
  } // end for

  return out;
}

我不喜欢它似乎有 3 个魔数(Magic Number) 52、26 和 84。我认为 26 可以用 asc("Z") - asc("A") + 1 替换

但是我不知道52和84代表什么。我不知道我会给他们起什么名字。

最佳答案

通过查看您的魔数(Magic Number)和 ASCII 表,我想出了这个。

26 是字母表中的字母数。这是你的第一个神奇数字。
asc('A') 是 65。65 减 13 是 52,你的第二个魔数(Magic Number)。
asc('a') 是 97。97 减 13 是 84,你的第三个魔数(Magic Number)。

这就是数字所代表的意思。您可以决定如何命名变量。或者,您可以将说明添加为注释。

编辑从这里开始

13 是您要旋转的字符数。这也是一个神奇的数字。您可以通过将此作为参数来增强您的功能,以便您也可以旋转其他数字。

关于coldfusion - ColdFusion 中 ROT13 上的魔数移除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53773254/

10-15 14:19