admin 管理员组

文章数量: 887032


2024年1月4日发(作者:vb中的续行符是什么)

( American Standard Code for Information Interchange, ASCII )

在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,象a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。

美国标准信息交换代码是由美国国家标准学会(American National Standard Institute , ANSI )制定的,标准的单字节字符编码方案,用于基于文本的数据。起始于50年代后期,在1967年定案。它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,它已被国际标准化组织(International

Organization for Standardization, ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母。

ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。标准 ASCII 码也叫基础ASCII码,使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号, 以及在美式英语中使用的特殊控制字符。其中:

0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为 8、9、10 和 13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。

32~126(共95个)是字符(32sp是空格),其中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表:

Bin Dec Hex 缩写/字符 解释

00000000

00000001

00000010

00000011

00000100

00000101

00000110

00000111

00001000

00001001

00001010

00001011

00001100

00001101

00001110

00001111

00010000

00010001

00010010

00010011

00010100

00010101

00010110

00010111

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

10

11

12

13

14

15

16

17

NUL(null)

SOH(start of handling)

STX (start of text)

ETX (end of text)

EOT (end of transm-ission)

ENQ (enquiry)

ACK (acknow-ledge)

BEL (bell)

BS (backsp-ace)

HT (horizon-tal tab)

LF (NL line feed, new line)

VT (vertical tab)

FF (NP form feed, new page)

CR (carriage return)

SO (shift out)

SI (shift in)

DLE (data link escape)

DC1 (device control 1)

DC2 (device control 2)

DC3 (device control 3)

DC4 (device control 4)

NAK (negati-ve acknowl-edge)

SYN (synchr-onous idle)

ETB (end of trans. block)

空字符

标题开始

正文开始

正文结束

传输结束

请求

收到通知

响铃

退格

水平制表符

换行键

垂直制表符

换页键

回车键

不用切换

启用切换

数据链路转义

设备控制1

设备控制2

设备控制3

设备控制4

拒绝接收

同步空闲

传输块结束

00011000

00011001

00011010

00011011

00011100

00011101

00011110

00011111

00100000

00100001

00100010

00100011

00100100

00100101

00100110

00100111

00101000

00101001

00101010

00101011

00101100

00101101

00101110

00101111

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

18

19

1A

1B

1C

1D

1E

1F

20

21

22

23

24

25

26

27

28

29

2A

2B

2C

2D

2E

2F

CAN (cancel)

EM (end of medium)

SUB (substit-ute)

ESC (escape)

FS (file separat-or)

GS (group separat-or)

RS (record separat-or)

US (unit separat-or)

!

"

#

$

%

&

'

(

)

*

+

,

-

.

/

取消

介质中断

替补

溢出

文件分割符

分组符

记录分离符

单元分隔符

空格

00110000

续表

00110001

00110010

00110011

00110100

00110101

00110110

00110111

00111000

00111001

00111010

00111011

00111100

00111101

00111110

00111111

01000000

48 30 0

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

31

32

33

34

35

36

37

38

39

3A

3B

3C

3D

3E

3F

40

1

2

3

4

5

6

7

8

9

:

;

<

=

>

?

@

A

B

C

D

E

01000001

01000010

01000011

01000100

01000101

65

66

67

68

69

41

42

43

44

45

01000110

01000111

01001000

01001001

01001010

01001011

01001100

01001101

01001110

01001111

01010000

01010001

01010010

01010011

01010100

01010101

01010110

01010111

01011000

01011001

01011010

01011011

01011100

01011101

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

46

47

48

49

4A

4B

4C

4D

4E

4F

50

51

52

53

54

55

56

57

58

59

5A

5B

5C

5D

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

[

]

01011110

01011111

01100000

01100001

01100010

续表

01100011

01100100

01100101

01100110

01100111

01101000

01101001

01101010

01101011

01101100

01101101

01101110

01101111

01110000

01110001

01110010

01110011

01110100

94

95

96

97

98

5E

5F

60

61

62

^

_

`

a

b

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

63

64

65

66

67

68

69

6A

6B

6C

6D

6E

6F

70

71

72

73

74

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

01110101

01110110

01110111

01111000

01111001

01111010

01111011

01111100

01111101

01111110

01111111

117

118

119

120

121

122

123

124

125

126

127

75

76

77

78

79

7A

7B

7C

7D

7E

7F

u

v

w

x

y

z

{

|

}

~

DEL (delete)

删除

常见ASCII码的大小规则:0~9<A~Z<a~z

1)数字比字母要小。如 “7”<“F”;

2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;

3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;

4)同个字母的大写字母比小写字母要小32。如“A”<“a” 。

记住几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48。 另外还有128-255的ASCII字符

字符集简史

6000年前 象形文字

3000年前 字母表

1838年到1854年 Samuel F. B. Morse发明了电报,字母表中的每个字符对应于一系列短的和长的脉冲

1821年到1824年 Louis Braille发明盲文,6位代码,它把字符、常用字母组合、常用单字和标点进行编码。

一个特殊的escape代码表示后续的字符代码应解释为大写。一个特殊的shift代码允许后续代码被解释为数字。

1931年 CCITT标准化Telex代码,包括Baudot #2的代码,都是包括字符和数字的5位代码。

1890年 早期计算机的字符码是从Hollerith卡片,6位字符码系统BCDIC(Binary-Coded Decimal Interchange Code:二进制编码十进制交换编码)

60年代 扩展为8位EBCDIC,IBM大型主机的标准

1967年 美国信息交换标准码(ASCII:American Standard Code for Information Interchange)

在字符长度是6位、7位还是8位的问题上产生了很大的争议。从可靠性的观点来看不应使用替换字符,

因此ASCII不能是6位编码,但由于费用的原因也排除了8位版本的方案(当时每位的储存空间成本仍很昂贵)。

这样,最终的字符码就有26个小写字母、26个大写字母、10个数字、32个符号、33个句柄和一个空格,总共128个字符码。

ASCII现在记录在ANSI X3.4-1986字符集-用于信息交换的7位美国国家标准码(7-Bit ASCII:7-Bit American National

Standard Code for Information Interchange),由美国国家标准协会(American National Standards Institute)发布。

图2-1中所示的ASCII字符码与ANSI文件中的格式相似。

[编辑本段]

ASCII国际问题

ASCII是美国标准,所以它不能良好满足其它讲英语国家的需要。例如英国的英镑符号(£)在哪里?

拉丁语字母表重音符号

使用斯拉夫字母表的希腊语、希伯来语、阿拉伯语和俄语。

汉字系统的中国象形汉字,日本和朝鲜。

1967年,国际标准化组织(ISO:International Standards Organization)推荐一个ASCII的变种,

代码0x40、0x5B、0x5C、0x5D、0x7B、0x7C和0x7D“为国家使用保留”,而代码0x5E、0x60和0x7E标为

“当国内要求的特殊字符需要8、9或10个空间位置时,可用于其它图形符号”。这显然不是一个最佳的国际解决方案,

因为这并不能保证一致性。但这却显示了人们如何想尽办法为不同的语言来编码的。

[编辑本段]

扩展ASCII

1981年 IBM PC ROM256个字符的字符集,即IBM扩展字符集

1985年11 Windows字符集被称作“ANSI字符集”,遵循了ANSI草案和ISO标准(ANSI/ISO 8859-1-1987,简“Latin 1”。

ANSI字符集的最初版本:

1987年4月代码页437,字符的映像代码,出现在MS-DOS 3.3

双字节字符集

双字节字符集(DBCS:double-byte character set),解决中国、日本和韩国的象形文字符和ASCII的某种兼容性。

DBCS从256代码开始,就像ASCII一样。与任何行为良好的代码页一样,最初的128个代码是ASCII。

然而,较高的128个代码中的某些总是跟随着第二个字节。

这两个字节一起(称作首字节和跟随字节)定义一个字符,通常是一个复杂的象形文字。

[编辑本段]

键盘常用ASCII码

ESC键 VK_ESCAPE (27)

回车键: VK_RETURN (13)

TAB键: VK_TAB (9)

Caps Lock键: VK_CAPITAL (20)

Shift键: VK_SHIFT (16)

Ctrl键: VK_CONTROL (17)

Alt键: VK_MENU (18)

空格键: VK_SPACE (32)

退格键: VK_BACK (8)

左徽标键: VK_LWIN (91)

右徽标键: VK_LWIN (92)

鼠标右键快捷键:VK_APPS (93)

Insert键: VK_INSERT (45)

Home键: VK_HOME (36)

Page Up: VK_PRIOR (33)

PageDown: VK_NEXT (34)

End键: VK_END (35)

Delete键: VK_DELETE (46)

方向键(←): VK_LEFT (37)

方向键(↑): VK_UP (38)

方向键(→): VK_RIGHT (39)

方向键(↓): VK_DOWN (40)

F1键: VK_F1 (112)

F2键: VK_F2 (113)

F3键: VK_F3 (114)

F4键: VK_F4 (115)

F5键: VK_F5 (116)

F6键: VK_F6 (117)

F7键: VK_F7 (118)

F8键: VK_F8 (119)

F9键: VK_F9 (120)

F10键: VK_F10 (121)

F11键: VK_F11 (122)

F12键: VK_F12 (123)

Num Lock键: VK_NUMLOCK (144)

小键盘0: VK_NUMPAD0 (48)

小键盘1: VK_NUMPAD0 (49)

小键盘2: VK_NUMPAD0 (50)

小键盘3: VK_NUMPAD0 (51)

小键盘4: VK_NUMPAD0 (52)

小键盘5: VK_NUMPAD0 (53)

小键盘6: VK_NUMPAD0 (54)

小键盘7: VK_NUMPAD0 (55)

小键盘8: VK_NUMPAD0 (56)

小键盘9: VK_NUMPAD0 (57)

小键盘.: VK_DECIMAL (46)

小键盘*: VK_MULTIPLY (42)

小键盘+: VK_ADD (43)

小键盘-: VK_SUBTRACT (45)

小键盘/: VK_DIVIDE (47)

Pause Break键: VK_PAUSE (19)

Scroll Lock键: VK_SCROLL (145)

ASCII码的算法:

A在ascii中定义为01000001,也就是十进制65,有了这个标准后,当我们输入A时,计算机就可以通过ascii码知道输入的字符的二进制编码是01000001。而没有这样的标准,我们就必须自己想办法告诉计算机我们输入了一个A;没有这样的标准,我们在别的机器上就需要重新编码以告诉计算机我们要输入A。ascii码指的不是十进制,是二进制。只是用十进制表示习惯一点罢了,比如在ascii码中,A的二进制编码为01000001,如果用十进制表示是65,用十六进制表示就是41H。

在ascii码表中,只包括了一些字符、数字、标点符号的信息表示,这主要是因为计算机是美国发明的,在英文下面,我们使用ascii表示就足够了!但是在汉字输入下面,用ascii码就不能表示了,而汉字只是中国的通用表示,所以如果我们要在计算机中输入汉字,就必须有一个像ascii码的标准来表示每一个汉字,这就是中国的汉字国标码,它定义了汉字在计算机中的一个表示标准。通过这个标准,但我们输入汉字的时候,我们的输入码就转换为区位码,通过唯一的区位码得到这个汉字的字形码并显示出来。当然汉字的区位码在计算机中也是用二进制表示的!


本文标签: 字符 代码 表示 标准 使用