Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不模糊字符串函数_C++_Qt_Modulus - Fatal编程技术网

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