大写字母ASCII码的二进制和16进制表示:
A -> 0100-0001 -> 41
Z -> 0101-1010 -> 5A
小写字母ASCII码的二进制和16进制表示:
a -> 0110-0001 -> 61
z -> 0111-1010 -> 7A
观察可以发现大写字母和小写字母二进制ASCII码的差别在从左数第三位,大写字母该位为0小写字母该位为1。可以利用这点完成字母的大小写的判定和转换,具体来说:
大小写判定:
//char ch;
bool is_lowercase = ch & 0x20;
检验代码:
#include<iostream>
using namespace std;
int main() {
char ch1 = 'a', ch2 = 'A';
bool is_lowercase = ch1 & 0x20;
is_lowercase ? printf("%c is lowercase.\n", ch1) : 0;
is_lowercase = ch2 & 0x20;
is_lowercase ? 0 : printf("%c is not lowercase.", ch2);
}
运行结果:
大小写转换: