###### tags: `FoShiShi` # ASCII ## What `ASCII` 全名`American Standard Code for Information Interchange` 中文名為美國標準資訊交換碼 是基於拉丁字母的一套電腦編碼系統 `ASCII`碼用了`0 ~ 127`個數字來儲存**大小寫英文字母,阿拉伯數字,...** ## When 在我們要去計算字元間的變換 例: 像在一個字串中把所有英文字母變成下一個(`A -> B`, `B -> C` ... `Z -> A`) 就**一定會用到`ASCII`來轉換字元** ## How ### ASCII表  :::info 看十進位對字符就可以了 十六進位不用看 ::: **第`0 ~ 31`跟`127`格的字元我們基本上不太會用到** **剩下的就是真正會用到的部分** 我們會發現,`ASCII`很聰明的把連續的英文字母跟數字排在一起,這樣就**可以透過`ASCII`的加減實現英文字母的加減** ### 型態轉換 只要在一個字元的名稱**前面加上`(int)`就能夠將其轉為他的`ASCII`碼** 相反的,只要**在一個數字(`ASCII`表的範圍中)的名稱前面加上`(char)`就可以將其轉為字元** 例: ```cpp= char chr = 'A'; cout << (int)chr << endl; // 65 int ascii = (int)(chr + 2); cout << (char)ascii << endl; // C ``` ## 實際應用 ### 題目1 輸入一字串`str` 其中只包含大寫英文字母 將其每個字母變為下一個字母 (`A -> B`, `B -> C`, ... , `Z -> A`) 然後輸出 :::spoiler solution 可以依序把每個英文字母的`ASCII`減掉`41('A'的ASCII)` 這樣就會變成: `A = 0, B = 1, ... , Z = 25` 這樣如果`Z`在`+1`後可以`% 26`變回`A` ```cpp= #include<iostream> using namespace std; int main() { string str; cin >> str; for(int i = 0; i < str.length(); i ++ ) { int num = int(str[i]) - int('A'); num = (num + 1) % 26; str[i] = char(int('A') + num); } cout << str << endl; } ```
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.