在ColdFusion中删除ROT13上的幻数

Jam*_*ler 4 coldfusion magic-numbers rot13 coldfusion-2018

我有这个函数来计算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;
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢它似乎有3个幻数52,26和84.我认为26可以替换 asc("Z") - asc("A") + 1

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

Dan*_*cuk 5

通过查看您的幻数和ASCII表,我想出了这个.

26是字母表中的字母数.那是你的第一个神奇数字.

asc('A') 是65. 65减13是52,你的第二个神奇数字.

asc('a') 是97. 97减13是84,你的第三个神奇数字.

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

编辑从这里开始

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