我在做一个解密程序。我一直在寻找并试图弄清楚这一点,但我什么也没看到。所以当我解密如9adwrqxvni0348&4#9
它会很好,但是当我有一个11
或更多的偏移量时,它会解密除最后一个字符以外的所有字符。无论过去11
的偏移量是否最后一个字符都是相同的。我刚才把所有的字母都加进去了,而且它们都有效。它只是最后一个数字字符,不能通过11
。当偏移量为11或更多时,解密凯撒密码失败
for (int count = 0; count < length; count++)
{
if (msg[count] >= 'a' && msg[count] <= 'z')//Letter wraping
{
dmsg += ((msg[count] - 'a' - offset + 26) % 26) + 'a';
}
else if (msg[count] >= '0' && msg[count] <= '9')//Number wraping
{
dmsg += (abs(msg[count] - '0' - offset + 10) % 10) + '0';
}
}
你试过计数<=长度吗? –
可能是你的问题:http://stackoverflow.com/questions/7594508/modulo-operator-with-negative-values –
如果代码是10bexrrywoi1459&4#9,那么它作为运行家1459进来。这是正确的。如果偏移量是11或更多,那么它跑出来跑回家1451.不管什么偏移量在11以上。奇怪 –