开发者社区> 问答> 正文

为什么可以通过ASCII中的字母排序规则来进行字母的大小写转换?

比如:

通过a+'a'-'A' 将大写字母转换成小写字母
通过a+'A'-'a' 将小写字母转换成大写字母

这是为什么呢?
望点拨指教,谢谢!

展开
收起
a123456678 2016-03-09 15:05:57 2795 0
1 条回答
写回答
取消 提交回答
  • 首先明确 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' 将小写字母转换成大写字母。

    2019-07-17 18:56:11
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载