coldfusion - ColdFusion 中 ROT13 上的幻数去除
问题描述
我有这个计算 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 个幻数 52、26 和 84。我认为 26 可以替换为asc("Z") - asc("A") + 1
但我不知道 52 和 84 代表什么。我不知道我会给他们起什么名字。
解决方案
通过查看您的幻数和 ASCII 表,我想出了这个。
26是字母表中字母的个数。这是你的第一个神奇数字。
asc('A')
是 65。65 减去 13 是 52,你的第二个幻数。
asc('a')
是 97。97 减去 13 是 84,你的第三个幻数。
这就是数字所代表的。您可以决定如何命名变量。或者,您可以将说明添加为注释。
编辑从这里开始
13 是您正在旋转的字符数。这也是一个神奇的数字。您可以通过将此作为参数来增强您的功能,以便您也可以按其他数字旋转。
推荐阅读
- r - Firefox 中 sankeyNetwork (NetworkD3) 的微小绘图输出
- regex - 使用正则表达式捕获在特定位置包含字母的单词?
- javascript - 简单的引导选择不起作用
- postgresql - 为什么使用 Postgres JSON 列类型?
- python - str.count() 的空间复杂度是多少?
- python - 命名空间错误 python zeep
- javascript - 添加后如何删除待办事项列表项
- python - 如何在 Hive 中提取子字符串
- algorithm - 如果一条边的权重发生变化,如何在运行 Bellman Ford 后找到最短的负循环?
- google-cloud-firestore - 使用 Cloud Firestore 按日期 asc 或 desc 按类别分页获取项目