ASCII字符集中的功能碼/控制字符
【什么是Function
Code功能碼或Function Character功能字符】
ASCII字符集,大家都知道吧,最基本的包含了128個(gè)字符。其中前32個(gè),0-31,即0x00-0x1F,都是不可見(jiàn)字符。這些字符,就叫做控制字符。
這些字符沒(méi)法打印出來(lái),但是每個(gè)字符,都對(duì)應(yīng)著一個(gè)特殊的控制功能的字符,簡(jiǎn)稱功能字符或功能碼Function Code。
簡(jiǎn)言之:ASCII中前32個(gè)字符,統(tǒng)稱為Function Code功能字符。
此外,由于ASCII中的127對(duì)應(yīng)的是Delete,也是不可見(jiàn)的,所以,此處根據(jù)筆者的理解,也可以歸為Function Code。
此類字符,對(duì)應(yīng)不同的“功能”,起到一定的“控制作用”,所以,稱為控制字符。
關(guān)于每個(gè)控制字符的控制功能縮寫(xiě),參見(jiàn)下表:
表格1ASCII中的控制字符
十
進(jìn)制
十六
進(jìn)制
控制
字符
轉(zhuǎn)義
字符*
說(shuō)明
Ctrl +
下列字母*
0
00
NUL
/0
Null character(空字符)
@ (Shift + 2)
1
01
SOH
Start of Header(標(biāo)題開(kāi)始)
A
2
02
STX
Start of Text(正文開(kāi)始)
B
3
03
ETX
End of Text(正文結(jié)束)
C
4
04
EOT
End of Transmission(傳輸結(jié)束)
D
5
05
ENQ
Enquiry(請(qǐng)求)
E
6
06
ACK
Acknowledgment(收到通知/響應(yīng))
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(換頁(yè)鍵)
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(數(shù)據(jù)鏈路轉(zhuǎn)義)
P
17
11
DC1
Device Control 1(設(shè)備控制1) /XON(Transmit On)
Q
18
12
DC2
Device Control 2(設(shè)備控制2)
R
19
13
DC3
Device Control 3(設(shè)備控制3) /XOFF(Transmit Off)
S
20
14
DC4
Device Control 4(設(shè)備控制4)
T
21
15
NAK
Negative Acknowledgement(拒絕接收/無(wú)響應(yīng))
U
22
16
SYN
Synchronous Idle(同步空閑)
V
23
17
ETB
End of Trans the Block(傳輸塊結(jié)束)
W
24
18
CAN
Cancel(取消)
X
25
19
EM
End of Medium(已到介質(zhì)末端/介質(zhì)存儲(chǔ)已滿)
Y
26
1A
SUB
Substitute(替補(bǔ)/替換)
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.轉(zhuǎn)義字符:即在C語(yǔ)言中或其他地方如何表示。
2.用鍵盤(pán)輸入控制字符:其中,32是空格鍵,127是Delete鍵,都不需要加Ctrl鍵,即可直接輸入。
3.可以通過(guò)“Ctrl+對(duì)應(yīng)按鍵”實(shí)現(xiàn)上述控制字符的輸入,你可能遇到的一些,比如:用Ctrl+V輸入SYNC,Ctrl+M輸入Enter(當(dāng)然也可以直接用Enter鍵,但是在Windows下面,其可能會(huì)發(fā)送兩個(gè)字符:CR和LF),Ctrl+Q輸入XON,Ctrl+S輸入XOFF等等。
其具體每個(gè)控制字符的含義,詳解介紹如下:
【ASCII中的Function/Control Code功能字符的詳細(xì)含義】
0 – NUL –NULl字符/空字符
ASCII字符集中的空字符,NULL,起初本意可以看作為NOP(中文意為空操作,就是啥都不做的意思),此位置可以忽略一個(gè)字符。
之所以有這個(gè)空字符,主要是用于計(jì)算機(jī)早期的記錄信息的紙帶,此處留個(gè)NUL字符,意思是先占這個(gè)位置,以待后用,比如你哪天想起來(lái)了,在這個(gè)位置在放一個(gè)別的啥字符之類的。
后來(lái)呢,NUL字符被用于C語(yǔ)言中,字符串的終結(jié)符,當(dāng)一個(gè)字符串中間出現(xiàn)NUL / NULL,代碼里面表現(xiàn)為/0,的時(shí)候,就意味著這個(gè)是一個(gè)字符串的結(jié)尾了。這樣就方便按照自己需求去定義字符串,多長(zhǎng)都行,當(dāng)然只要你內(nèi)存放得下,然后最后加一個(gè)/0,即空字符,意思是當(dāng)前字符串到此結(jié)束。
1 – SOH –StartOfHeading標(biāo)題開(kāi)始
如果信息溝通交流主要以命令和消息的形式的話,SOH就可以用于標(biāo)記每個(gè)消息的開(kāi)始。
1963年,最開(kāi)始ASCII標(biāo)準(zhǔn)中,把此字符定義為Start of Message,后來(lái)又改為現(xiàn)在的Start Of Heading。
現(xiàn)在,這個(gè)SOH常見(jiàn)于主從(master-slave)模式的RS232的通信中,一個(gè)主設(shè)備,以SOH開(kāi)頭,和從設(shè)備進(jìn)行通信。這樣方便從設(shè)備在數(shù)據(jù)傳輸出現(xiàn)錯(cuò)誤的時(shí)候,在下一次通信之前,去實(shí)現(xiàn)重新同步(resynchronize)。如果沒(méi)有一個(gè)清晰的類似于SOH這樣的標(biāo)記,去標(biāo)記每個(gè)命令的起始或開(kāi)頭的話,那么重新同步,就很難實(shí)現(xiàn)了。
2 – STX –StartOfText文本開(kāi)始
3 – ETX –End OfText文本結(jié)束
通過(guò)某種通訊協(xié)議去傳輸?shù)囊粋€(gè)數(shù)據(jù)(包),稱為一幀的話,常會(huì)包含一個(gè)幀頭,包含了尋址信息,即你是要發(fā)給誰(shuí),要發(fā)送到目的地是哪里,其后跟著真正要發(fā)送的數(shù)據(jù)內(nèi)容。
而STX,就用于標(biāo)記這個(gè)數(shù)據(jù)內(nèi)容的開(kāi)始。接下來(lái)是要傳輸?shù)臄?shù)據(jù),最后是ETX,表明數(shù)據(jù)的結(jié)束。
其中,中間具體傳輸?shù)臄?shù)據(jù)內(nèi)容,ASCII規(guī)范并沒(méi)有去定義,其和你所用的傳輸協(xié)議,具體自己要傳什么數(shù)據(jù)有關(guān)。
幀頭
數(shù)據(jù)或文本內(nèi)容
SOH(表明幀頭開(kāi)始)
。。。。(幀頭信息,比如包含了目的地址,表明你發(fā)送給誰(shuí)等等)
STX(表明數(shù)據(jù)開(kāi)始)
。。。(真正要傳輸?shù)臄?shù)據(jù))
ETX(表明數(shù)據(jù)結(jié)束)