比如:
通过a+'a'-'A' 将大写字母转换成小写字母
通过a+'A'-'a' 将小写字母转换成大写字母
这是为什么呢?
望点拨指教,谢谢!
首先明确 C++ 中字符的概念,一个char类型的变量在实际存储时通常是一个8位的二进制数(即一个字节),所以支持各种数学运算。当你用'A'-'a'时,结果就是这两个字符对应的数值差。
而一个char与一个数字是怎么对应起来的呢?这就要说到 ASCII 字符表了,它明确了字符与数字之间的映射关系,每一个字符都一一对应于一个数字。部分 ASCII 字符表如下所示:
DEC OCT HEX BIN Symbol Description
...
48 060 30 00110000 0 Zero
49 061 31 00110001 1 One
50 062 32 00110010 2 Two
...
56 070 38 00111000 8 Eight
57 071 39 00111001 9 Nine
...
65 101 41 01000001 A Uppercase A
66 102 42 01000010 B Uppercase B
67 103 43 01000011 C Uppercase C
...
88 130 58 01011000 X Uppercase X
89 131 59 01011001 Y Uppercase Y
90 132 5A 01011010 Z Uppercase Z
...
97 141 61 01100001 a Lowercase a
98 142 62 01100010 b Lowercase b
99 143 63 01100011 c Lowercase c
...
120 170 78 01111000 x Lowercase x
121 171 79 01111001 y Lowercase y
122 172 7A 01111010 z Lowercase z
...
不知道看完以后题主能发现规律吗?表中的字符0到9是连续分布的,A到Z是连续分布的,a到z也是连续分布的。而且同一对大小写字母之间的距离是相同的,即'A'-'a',且大写在前,小写在后。
所以,可以通过通过 ch + 'a' - 'A' 将大写字母转换成小写字母,通过 ch + 'A' - 'a' 将小写字母转换成大写字母。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。