[C++]ASCII字母大小写转换

完整源码

#include 
#include 
using namespace std;

int main()  {
    
    string a {"BaSiC"};
    string b {"MinIX"};
    
    for(int i=0;i<5;i++) {
        a[i] = a[i] & 0xDF;     // to upper case
        b[i] = b[i] | 0x20;     // to lower case    
    }
    
    cout << a << "\n" << b;
    return 0;
}

运行结果

ASCII字符大小写互相转换.PNG

代码原理

     8421  8421
and  1101  1111
       D      F
or   0010  0000
       2      0
  • C++/C 使用前缀 0x表示十六进制数
  • 0x数字零以及小写字母x

大小写转换的汇编知识参见

  • https://www.jianshu.com/p/7c55d6debcb0
  • https://www.jianshu.com/p/175f90648631

拓展阅读

https://stackoverflow.com/questions/16405354/python-confused-by-if-statement-if-bits0x20-0x20?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

你可能感兴趣的:([C++]ASCII字母大小写转换)