1 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
它永遠(yuǎn)不會(huì)允許加密字符超出其假定的范圍,即 a - z。a 和 z 的 ascii 分別為 97 和 122,您只希望凱撒密碼加密在此字符范圍內(nèi)。
這將檢查 的 ascii 代碼是否ch
大于 z 的 ascii代碼
if(ch > 'z'){
如果是,它將計(jì)算:(ascii of ch
) - (ascii of z
) + (ascii of a
) - 1。
ch = (char)(ch - 'z' + 'a' - 1);
它被翻譯成ch = (char)(ch - 122 + 97 - 1);
假設(shè)您想用a
密鑰加密字符3
。該程序?qū)⒉捎?97 (ascii of a
) + 3。您將得到 100,這是 的 ascii d
。然而,如果你想z
用密鑰加密怎么辦3
?
和以前一樣,需要 122 (ascii of z
) + 3 = 125。但是,在 97 - 122 (az) 范圍內(nèi)找不到 125。因此,您將得到一個(gè)不需要的字符(在本例中,125 是 的 ascii }
)。
因此,(ch - 'z' + 'a' - 1)
將確保任何超過(guò) ascii 122 的字符都將被轉(zhuǎn)換回 ascii 范圍僅包含 97 和 122 的字符。在 125 的示例中,ch = (char)(125 - 122 + 97 - 1)
=> ch = (char)(99)
=> ch = c
。
添加回答
舉報(bào)