ASCII字符集中的功能码/控制字符
扫描二维码
随时随地手机看文章
【什么是Function
Code功能码或Function Character功能字符】
ASCII字符集,大家都知道吧,最基本的包含了128个字符。其中前32个,0-31,即0x00-0x1F,都是不可见字符。这些字符,就叫做控制字符。
这些字符没法打印出来,但是每个字符,都对应着一个特殊的控制功能的字符,简称功能字符或功能码Function Code。
简言之:ASCII中前32个字符,统称为Function Code功能字符。
此外,由于ASCII中的127对应的是Delete,也是不可见的,所以,此处根据笔者的理解,也可以归为Function Code。
此类字符,对应不同的“功能”,起到一定的“控制作用”,所以,称为控制字符。
关于每个控制字符的控制功能缩写,参见下表:
表格1ASCII中的控制字符
十
进制
十六
进制
控制
字符
转义
字符*
说明
Ctrl +
下列字母*
0
00
NUL
/0
Null character(空字符)
@ (Shift + 2)
1
01
SOH
Start of Header(标题开始)
A
2
02
STX
Start of Text(正文开始)
B
3
03
ETX
End of Text(正文结束)
C
4
04
EOT
End of Transmission(传输结束)
D
5
05
ENQ
Enquiry(请求)
E
6
06
ACK
Acknowledgment(收到通知/响应)
F
7
07
BEL
/a
Bell(响铃)
G
8
08
BS
/b
Backspace(退格)
H
9
09
HT
/t
Horizontal Tab(水平制表符)
I
10
0A
LF
/n
Line feed(换行键)
J
11
0B
VT
/v
Vertical Tab(垂直制表符)
K
12
0C
FF
/f
Form feed(换页键)
L
13
0D
CR
/r
Carriage return(回车键)
M
14
0E
SO
Shift Out(不用切换)
N
15
0F
SI
Shift In(启用切换)
O
16
10
DLE
Data Link Escape(数据链路转义)
P
17
11
DC1
Device Control 1(设备控制1) /XON(Transmit On)
Q
18
12
DC2
Device Control 2(设备控制2)
R
19
13
DC3
Device Control 3(设备控制3) /XOFF(Transmit Off)
S
20
14
DC4
Device Control 4(设备控制4)
T
21
15
NAK
Negative Acknowledgement(拒绝接收/无响应)
U
22
16
SYN
Synchronous Idle(同步空闲)
V
23
17
ETB
End of Trans the Block(传输块结束)
W
24
18
CAN
Cancel(取消)
X
25
19
EM
End of Medium(已到介质末端/介质存储已满)
Y
26
1A
SUB
Substitute(替补/替换)
Z
27
1B
ESC
/e
Escape(溢出/逃离/取消)
[
28
1C
FS
File Separator(文件分割符)
/
29
1D
GS
Group Separator(分组符)
]
30
1E
RS
Record Separator(记录分隔符)
^ (Shit + 6)
31
1F
US
Unit Separator(单元分隔符)
_ (Shift + -)
32
20
SP
White space
[Space] *
127
7F
DEL
Delete(删除)
[Delete] *
注(*):
1.转义字符:即在C语言中或其他地方如何表示。
2.用键盘输入控制字符:其中,32是空格键,127是Delete键,都不需要加Ctrl键,即可直接输入。
3.可以通过“Ctrl+对应按键”实现上述控制字符的输入,你可能遇到的一些,比如:用Ctrl+V输入SYNC,Ctrl+M输入Enter(当然也可以直接用Enter键,但是在Windows下面,其可能会发送两个字符:CR和LF),Ctrl+Q输入XON,Ctrl+S输入XOFF等等。
其具体每个控制字符的含义,详解介绍如下:
【ASCII中的Function/Control Code功能字符的详细含义】
0 – NUL –NULl字符/空字符
ASCII字符集中的空字符,NULL,起初本意可以看作为NOP(中文意为空操作,就是啥都不做的意思),此位置可以忽略一个字符。
之所以有这个空字符,主要是用于计算机早期的记录信息的纸带,此处留个NUL字符,意思是先占这个位置,以待后用,比如你哪天想起来了,在这个位置在放一个别的啥字符之类的。
后来呢,NUL字符被用于C语言中,字符串的终结符,当一个字符串中间出现NUL / NULL,代码里面表现为/0,的时候,就意味着这个是一个字符串的结尾了。这样就方便按照自己需求去定义字符串,多长都行,当然只要你内存放得下,然后最后加一个/0,即空字符,意思是当前字符串到此结束。
1 – SOH –StartOfHeading标题开始
如果信息沟通交流主要以命令和消息的形式的话,SOH就可以用于标记每个消息的开始。
1963年,最开始ASCII标准中,把此字符定义为Start of Message,后来又改为现在的Start Of Heading。
现在,这个SOH常见于主从(master-slave)模式的RS232的通信中,一个主设备,以SOH开头,和从设备进行通信。这样方便从设备在数据传输出现错误的时候,在下一次通信之前,去实现重新同步(resynchronize)。如果没有一个清晰的类似于SOH这样的标记,去标记每个命令的起始或开头的话,那么重新同步,就很难实现了。
2 – STX –StartOfText文本开始
3 – ETX –End OfText文本结束
通过某种通讯协议去传输的一个数据(包),称为一帧的话,常会包含一个帧头,包含了寻址信息,即你是要发给谁,要发送到目的地是哪里,其后跟着真正要发送的数据内容。
而STX,就用于标记这个数据内容的开始。接下来是要传输的数据,最后是ETX,表明数据的结束。
其中,中间具体传输的数据内容,ASCII规范并没有去定义,其和你所用的传输协议,具体自己要传什么数据有关。
帧头
数据或文本内容
SOH(表明帧头开始)
。。。。(帧头信息,比如包含了目的地址,表明你发送给谁等等)
STX(表明数据开始)
。。。(真正要传输的数据)
ETX(表明数据结束)