我们知道字符在计算机内使用ASCII码表示的,那么如何转换英文字母大小写呢?我们来看一下所有字母的大写字符和小写字符所对应的ASCII码表示
大写 | 十六进制 | 二进制 | 小写 | 十六进制 | 二进制 |
A | 41 | 01000001 | a | 61 | 01100001 |
B | 42 | 01000010 | b | 62 | 01100010 |
C | 43 | 01000011 | c | 63 | 01100011 |
D | 44 | 01000100 | d | 64 | 01100100 |
E | 45 | 01000101 | e | 65 | 01100101 |
F | 46 | 01000110 | f | 66 | 01100110 |
通过加和减
通过表可以看出来,小写字母的ASCII值比大写字母的大20H(十六进制)。因此如果小写字母转换为大写字母,可以把其对应的ASCII码减去20H。
但是这样必须判断字母是大写还是小写
1 2 3 |
//把小写字母转换成大写 if (a >= 97 && a <= 122) a = a - 0x20; |
通过位运算
其实,还有一个不用比较的方法,我们通过表可以发现,所有大写字母的ASCII的第五位都是0,而小写字母的第五位都是1,因此,可以通过将第五位改变来转换大小写。
1 2 |
//把小写字母转换成大写 a = a & 0xdf; |
注意:此方法只限于大小写混合的时候,如果是别的符号,会产生错误