info
对应 GESP C++ 2 级知识块④:ASCII 编码
官方要求:能识别常用字符的 ASCII 码(空格:32、"0":48、"A":65、"a":97),并掌握 ASCII 码和字符之间相互转换的方法。
第14章 ASCII 编码
14.1 基本概念
ASCII 全称美国信息交换标准代码,使用 7 位二进制,对应十进制 0~127,共 128 个字符。
计算机存储 char 时占用 1 字节(8 位),最高位固定为 0。
作用:统一字符和数字的对应关系,实现文本存储、输入输出。
14.2 ASCII 字符分类
14.2.1 控制字符(0~31、127)
不可打印,用于设备控制
\0数值 0:字符串结束标记\n数值 10:换行\r数值 13:回车- ESC 27、DEL 127
14.2.2 可打印字符(32~126)
- 空格:32
- 数字
'0'~'9':48 ~ 57 - 大写
'A'~'Z':65 ~ 90 - 小写
'a'~'z':97 ~ 122 - 标点、运算符:
! + - =等
关键规律
小写字母 = 对应大写字母 + 32
例:'A'(65) + 32 = 'a'(97)
tip
必须背下来的四个数
空格 32、'0' 48、'A' 65、'a' 97。只要记住这四个,其余都能推:比如 'C' = 65+2 = 67,'5' = 48+5 = 53。
14.3 扩展 ASCII(8 位,0~255)
0127 和标准 ASCII 一致,128255 为扩展符号。
缺陷:不同系统扩展字符表不统一,跨平台乱码,不推荐使用。
14.4 C/C++ 中的 ASCII 应用
char 本质是 1 字节整数,可以和 int 互相转换
char ch = 'A';
int num = ch; // num = 65
char c2 = 97; // c2 = 'a'
1. 判断字符类型
// 判断大写
if (c >= 'A' && c <= 'Z')
// 判断小写
if (c >= 'a' && c <= 'z')
// 判断数字
if (c >= '0' && c <= '9')
2. 大小写转换
char toLower(char c)
{
if (c >= 'A' && c <= 'Z')
return c + 32; // 大写 + 32 → 小写
return c;
}
caution
字符 ↔ 数字 互转公式
- 数字字符转数值:
'7' - '0' = 7 - 数值转数字字符:
5 + '0' = '5' - 大写转小写:
ch + 32;小写转大写:ch - 32
这些公式是字符串处理、数位分离(第 17 章)的基础,务必练熟。
3. 字符串判断结束
遍历字符数组时,str[i] == '\0' 代表字符串末尾
14.5 ASCII 局限
仅支持英文拉丁字符,无法存储中文; 中文使用 GBK、Unicode(UTF-8) 等编码。
tip
一道真题练手
输入一个字符,如果是大写字母就转成小写输出,否则原样输出。核心就是 if (c >= 'A' && c <= 'Z') c = c + 32;,再 cout << c;。这正是上面"大小写转换"的简化版。
练习题(2 级单选风格)
- 大写字母 'A' 的 ASCII 编码值是?
- A. 65
- B. 97
- C. 48
- D. 32
- 小写字母 'a' 与大写字母 'A' 的 ASCII 值相差?
- A. 26
- B. 32
- C. 97
- D. 65
- 已知 'B' 的 ASCII 值为 66,要把它转成小写字母,应当?
- A. 减 32
- B. 加 32
- C. 乘 2
- D. 加 26
- 数字字符 '0' 的 ASCII 编码值是?
- A. 0
- B. 48
- C. 65
- D. 32
- 表达式
'9' - '0'的结果类型是整型,其值是?- A. 9
- B. '9'
- C. 57
- D. 48
参考答案(点击展开)
- A —
'A'=65、'a'=97、'0'=48、空格=32,这是必须背熟的四组基准值。 - B — 小写比大写大 32(97-65=32),大写转小写
+32,小写转大写-32。 - B — 大写→小写需
+32;若是小写→大写才-32。 - B — 数字字符
'0'的编码是 48,'1'=49 …'9'=57。 - A — 同类型字符相减得到整数差值:
'9'(57) −'0'(48) = 9,常用于把数字字符转成数值。