我在做一個解密程序。我一直在尋找並試圖弄清楚這一點,但我什麼也沒看到。所以當我解密如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以上。奇怪 –