第14章 ASCII 编码
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。 作用:统一字符和数字的对应关系,实现文本存储、输入输出。

常用 ASCII 码位对照

14.2 ASCII 字符分类

14.2.1 控制字符(0~31、127)

不可打印,用于设备控制

  • \0 数值 0:字符串结束标记
  • \n 数值 10:换行
  • \r 数值 13:回车
  • ESC 27、DEL 127

14.2.2 可打印字符(32~126)

  1. 空格:32
  2. 数字 '0'~'9':48 ~ 57
  3. 大写 'A'~'Z':65 ~ 90
  4. 小写 'a'~'z':97 ~ 122
  5. 标点、运算符:! + - = 等

关键规律

小写字母 = 对应大写字母 + 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 级单选风格)

  1. 大写字母 'A' 的 ASCII 编码值是?
    • A. 65
    • B. 97
    • C. 48
    • D. 32
  2. 小写字母 'a' 与大写字母 'A' 的 ASCII 值相差?
    • A. 26
    • B. 32
    • C. 97
    • D. 65
  3. 已知 'B' 的 ASCII 值为 66,要把它转成小写字母,应当?
    • A. 减 32
    • B. 加 32
    • C. 乘 2
    • D. 加 26
  4. 数字字符 '0' 的 ASCII 编码值是?
    • A. 0
    • B. 48
    • C. 65
    • D. 32
  5. 表达式 '9' - '0' 的结果类型是整型,其值是?
    • A. 9
    • B. '9'
    • C. 57
    • D. 48
参考答案(点击展开)
  1. A — 'A'=65、'a'=97、'0'=48、空格=32,这是必须背熟的四组基准值。
  2. B — 小写比大写大 32(97-65=32),大写转小写 +32,小写转大写 -32。
  3. B — 大写→小写需 +32;若是小写→大写才 -32。
  4. B — 数字字符 '0' 的编码是 48,'1'=49 … '9'=57。
  5. A — 同类型字符相减得到整数差值:'9'(57) − '0'(48) = 9,常用于把数字字符转成数值。
SShowball OI知识手册