亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這個 rot13 密碼有什么問題?

這個 rot13 密碼有什么問題?

Go
弒天下 2023-07-26 10:04:50
我在使用tour.golang.org/methods/23時遇到了一些問題package mainimport (    "io"    "os"    "strings")type rot13Reader struct {    r io.Reader}func (r rot13Reader) Read(s []byte) (int, error) {    a, e := r.r.Read(s)    for i := 0; i < a; i++ {        if(s[i] >= 'a') {            s[i] = ((s[i] - 'a') + 13) % 26 + 'a'           }        if(s[i] >= 'A') {            s[i] = ((s[i] - 'A') + 13) % 26 + 'A'           }    }    return a, e}func main() {    s := strings.NewReader("Lbh penpxrq gur pbqr!")    r := rot13Reader{s}    io.Copy(os.Stdout, &r)}我先添加然后修改,但在考慮了小寫和大寫 ascii 代碼之間的差距后,結果看起來不太正確YHN VKTVDXW MAX VHWX!
查看完整描述

3 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

'A'(從數字上來說)是 65。字母表中越深的字母越多,最多可達'Z'90。

'a'(從數字上來說)是 97。字母表中越深的字母越多,最多為'z'122。

(不要問我為什么要記住一些 ASCII。我確實必須查找這些z值。:-))

練習 1:如果s[i]'a',即 97,然后將其 rot-13 得到'n'(110),這是否大于 65?當你聽到第二個 if陳述時會發生什么?

練習2:如果s[i]'_'(十進制95),這里會發生什么?

(你不斷改變你的問題,所以現在這些練習有點沒有實際意義。)


查看完整回答
反對 回復 2023-07-26
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

如果您直接使用字母的 ascii 值,則必須對它們進行偏移。大寫 AZ 的 ascii 值是 65-90(含),小寫 az 的 ascii 值是 97-122(含)。



查看完整回答
反對 回復 2023-07-26
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

通過修復字母檢查的界限,確保只處理字母

在“a”和“z”之間以及“A”和“Z”之間

當你的第二個 Z 需要大寫時,它是小寫的


查看完整回答
反對 回復 2023-07-26
  • 3 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號