ASCII碼 字母大小寫轉換3種實用方法

2022-02-24 15:36:11 字數 1088 閱讀 7846

方法一:位運算

要求ascii編碼的字元ch必須是字母,才能轉換。

統一轉換成大寫:ch & 0b11011111, 簡寫:ch & 0xdf

統一轉換成小寫:ch | 0b00100000, 簡寫:ch | 0x20

a的ascii碼是

65 -- 0x41 -- 0b0100 0001

z對應是

90 -- 0x5a -- 0b0101 1010

a的ascii碼是

97 -- 0x61 -- 0b0110 0001

z對應是

122 - 0x7a -- 0b0111 1010

說明:不妨記最高位第7位,那麼,

大寫轉小寫:

a轉換為a,變化的只有第5位,從0到1;

z轉換為z, 變化的只有第5位,從0到1;

也就是說,ch | 0b0010 0000,是把第5位置位,也就是大寫轉小寫

小寫轉大寫:

a轉換為a,變化的只有第5位,從1到0;

z轉換為z, 變化的只有第5位,從1到0;

也就是說,ch &0b1101 1111,是把第5位清除,也就是小寫轉大寫

方法二:常規方法

要求必須是字母,才能轉換。

統一轉換成大寫:

if (ch <= 'z' && ch >= 'a')

ch = ch + 'a' - 'a';

統一轉換成小寫:

if (ch <= 'z' && ch >= 'a')

ch = ch + 'a' - 'a'; // <=> ch |= 'a' - 'a'

方法三:呼叫庫函式

庫函式會自己識別輸入字元是否為字母。

統一轉換成大寫:

toupper(ch);

統一轉換成小寫:

tolower(ch);

需要#include

ref

字母大小寫轉換

好久沒寫博了,準備繼續搞起。今天先寫個簡單的,字母的大小寫轉換。問題1 給定乙個字串 asdfghj 把它全部轉為大寫字母或者小寫字母。這問題是不是太簡單了點,現有的各種函式庫裡面都有什麼strtoupper strtolower 之類的轉換函式。自己手寫乙個呢?這讓我想起以前上機實驗寫c程式的時候...

字母大小寫轉換

這道題其實很簡單,有好幾種做法。我們都知道大寫字母a z的編碼是65 90,小寫字母的編碼a z是97 112。首先先看這張 由圖中的 可以觀察得出 很直觀可以看出,大寫字母和小寫字母的ascii碼值相差32 通過仔細觀察相應的二進位制,可以得出大寫字母和小寫字母二進位制的第5位 從右往左從0開始數...

js字母大小寫轉換

tolocaleuppercase 方法 返回乙個字串,其中所有的字母字元都被轉換為大寫,同時適應宿主環境的當前區域設定。stringvar.tolocaleuppercase 必選的 stringvar 引用是乙個 string 物件,值或文字。說明tolocaleuppercase 方法轉換字串...