【发布时间】:2014-08-02 21:33:29
【问题描述】:
假设我有一串字符:"
String input = "5;5;5;5;"
并将它们插入到这个函数中:
for(int i=input.length()-1; i>=0; i--){
output += (QChar)((input[i].unicode() + 32) + 8160);
}
return output;
输出:※‵※‵※‵※‵
如何编写解密函数?
我知道我可以做到:
for(int i=input.length()-1; i>=0; i--){
output += (QChar)(input.unicode()-32 - 8160);
}
return output;
但为什么会这样:
for(int i=input.length()-1; i>=0; i--){
output += (QChar)((input.unicode()-32)%255); //Get ASCII character
}
return output;
这只是巧合吗?或者我只是不理解数学。我知道尝试反转模数运算几乎是不可能的,除非你知道你想要的x 的范围。
(1 + x) % 4 = 2
x 可以是 5,9,13,...
【问题讨论】: