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


方法一:位運算
要求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 <ctype.h>
 
 
REF


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM