C++ 不模糊字符串函数
假设我有一个字符串: 并将它们插入此函数:C++ 不模糊字符串函数,c++,qt,modulus,C++,Qt,Modulus,假设我有一个字符串: 并将它们插入此函数: 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
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,…第二个解密函数工作,因为8160恰好是255的倍数,原始值包含在0-254范围内 看看你的例子,
x
可以是任何n
形式的任何数字。同样,对于第二个解密函数,input.unicode()-32+255*n%255
对于n
的任何小值都具有相同的值(即,只要在计算过程中没有溢出),包括与255*(-32)=-8160
相对应的大小写n=-32
(1 + x) % 4 = 2