一、ASCII 码简介
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一套基于拉丁字母的字符编码,共收录了 128 个字符,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,它等同于国际标准 ISO/IEC 646。ASCII 规范于 1967 年第一次发布,最后一次更新是在 1986 年。
ASCII 编码范围 0x00-0x7F,即十进制的 0-127,定义了 128 个字符。它包含了 33 个控制字符(具有某些特殊功能但是无法显示的字符)和 95 个可显示字符(数字、字母、符号)。国标码 GB18030、国际码 Unicode 均兼容 ASCII 编码。
二、ASCII 码的表达方式
ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。标准 ASCII 码也叫基础 ASCII 码,使用 7 位二进制数(剩下的 1 位二进制为 0)来表示所有的大写和小写字母,数字 0 到 9、标点符号,以及在美式英语中使用的特殊控制字符。
0~31 及 127 (共 33 个)是控制字符或通信专用字符,其余为可显示字符,例如,控制符: LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。ASCII 值为 8、9、10 和13 分别转换为退格、制表、换行和回车字符,它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。
32~126 (共 95 个) 是字符( 32 是空格),其中 48~57 为 0 到 9 十个阿拉伯数字。65~90 为 26 个大写英文字母,97~122 为 26 个小写英文字母,其余为一些标点符号、运算符号等。
同时还要注意,在标准 ASCII 中,其最高位 (b7) 用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中 1 的个数必须是奇数,若非奇数,则在最高位 b7 添 1。偶校验规定:正确的代码一个字节中 1 的个数必须是偶数,若非偶数,则在最高位 b7 添 1。
后 128 个称为扩展 ASCII 码。许多基于 x86 的系统都支持使用扩展(或“高”)ASCII。扩展 ASCII 码允许将每个字符的第 8 位用于确定附加的 128 个特殊符号字符、外来语字母和图形符号。
三、大小规则
常见 ASCII 码的大小规则:0 - 9 < A - Z < a - z。
- 数字比字母要小,如 7 < F;
- 数字 0 比数字 9 要小,并按 0 到 9 顺序递增,如 3 < 8;
- 字母 A 比字母 Z 要小,并按 A 到 Z 顺序递增,如 A < Z;
- 同个字母的大写字母比小写字母要小 32,如 A < a;
- 几个常见字母的 ASCII 码大小:0 为 48;A 为 65;a 为 97。
四、常见字符的 ASCII 码
4.1 数字的 ASCII 码
十进制 | 符号 |
---|---|
48 | 0 |
49 | 1 |
50 | 2 |
51 | 3 |
52 | 4 |
53 | 5 |
54 | 6 |
55 | 7 |
56 | 8 |
57 | 9 |
4.2 大写英文字母的 ASCII 码
十进制 | 符号 |
---|---|
65 | A |
66 | B |
67 | C |
68 | D |
69 | E |
70 | F |
71 | G |
72 | H |
73 | I |
74 | J |
75 | K |
76 | L |
77 | M |
78 | N |
79 | O |
80 | P |
81 | Q |
82 | R |
83 | S |
84 | T |
85 | U |
86 | V |
87 | W |
88 | X |
89 | Y |
90 | Z |
4.3 小写英文字母的 ASCII 码
十进制 | 符号 |
---|---|
97 | a |
98 | b |
99 | c |
100 | d |
101 | e |
102 | f |
103 | g |
104 | h |
105 | i |
106 | j |
107 | k |
108 | l |
109 | m |
110 | n |
111 | o |
112 | p |
113 | q |
114 | r |
115 | s |
116 | t |
117 | u |
118 | v |
119 | w |
120 | x |
121 | y |
122 | z |
五、常用 Java 语言处理字符的方法
public static void main(String[] args) {
String word = "a123bcAD34d8ef34";
char char1 = word.charAt(0);
System.out.println(char1); // a
// 打印字符的十进制 ASCII 编码值
System.out.println(Integer.valueOf(char1)); // 97
// 将小写字母字符转为大写字母字符
char char2 = (char) (char1 - 'a' + 'A');
System.out.println(char2); // A
// 将字符表示的数字转为十进制数字
int integer1 = word.charAt(1) - '0';
System.out.println(integer1); // 1
// 将 ASCII 码值转换为对应的字符串
// 如知晓字母 'b' 的 ASCII 码值,将其转化为字符串 "b"
String ans = String.valueOf((char) ('a' + 1));
System.out.println(ans);
// 或者
char tmp = (char) ('a' + 1);
String ans1 = Character.toString(tmp);
System.out.println(ans1);
}