什么是換碼符(escape character)?

換碼符是用來執行一個命令或一項任務的字符,它們不會被打印到屏幕上。例如,一個換碼符可以是這樣一個字符,它被傳遞給一個設備,告訴計算機屏幕以紅色而不是通常的白色來顯示下一行。這個換碼符將和真正要被設備以紅色來顯示的字符一起被傳遞給設備。那么設備如何知道這個字符是一個換碼符呢?一般來說,在發送換碼符之前,要先發送Escape鍵(十進制為27,八進制為\033),這樣設備就會知道下一個到達的字符是換碼符。當設備接收到這個換碼符后,它先執行該換碼符所代表的命令,然后恢復正常操作,即接收字符并把它們打印到屏幕上。因為通常要用兩個或更多個字符來表示所要求的命令(Escape鍵加上命令字符本身),所以通常稱這些字符為換碼序列。

這聽起來有些混亂(Escape鍵后面跟著換碼符),但這也正是這些字符之所以被叫做換碼符的原因。Escape鍵用來通知字符的接收者下一個字符是換碼符,而不是普通的字符。換碼符本身可以是任何字符,甚至可以是另一個Escape鍵。具體用什么字符來代表所要求的命令,由讀入這些字符并等待相應命令的程序來決定。???

這方面的一個例子是ANSI.SYS設備驅動程序,該程序由CONFIG.SYS文件裝入,它會攔截所有送往屏幕的字符,并按換碼序列的要求處理這些字符。ANSI.SYS的作用是提供一種方法來打印彩色的、帶下劃線的或閃爍的文本,或者執行象清屏這樣的高級命令。ANSI.SYS的優點在于你不必知道你使用的是哪種顯示器或顯示卡,因為ANSI.SYS會替你處理這個問題。你只需在要送往屏幕的字符串中的合適位置加入換碼符,ANSI.SYS會替你處理其余的事情。例如,如果你輸入了“\033H4Hello there,”ANSI.SYS就會在屏幕上打印出紅色的“Hello there”——它將發現Escape鍵(\033),讀入命令(在這里是H4,即以紅色打印其余的字符),然后打印其余的字符("Hello there")。

在ANSI.SYS之前,換碼符被用在老式的集中化計算機環境(一個主機連接著很多啞終端)中。在那個時代,終端自身沒有計算能力,不能顯示圖形,而且大部分都是單色的,不能顯示彩色。但是,每臺顯示器都有一套由主機發送給顯示器的換碼符,用來指示顯示器做清屏、加下劃線或閃爍這樣一些事情。與使用ANSI.SYS一樣,只要程序員在發送給顯示器的字符串中加入換碼符,顯示器就會執行相應的命令。

今天,這種類型的換碼序列已經不再使用了。然而,當時還有許多其它類型的被定義為換碼符的字符序列,它們一直被延用至今,并且仍然在被廣泛使用。例如,在介紹如何把一個八進制值或十六進制值賦給一個變量的問題中,筆者就使用了一種換碼符(在十六進制中使用“Ox”,在八進制中使用“\”)。注意,這些字符并沒有用Escape鍵來作特殊標識,但它們的確被用來表示其后的字符有某種特殊性。實際上,反斜杠(\)經常被當作一個換碼符來使用。例如,在c語言中,你可以用“\n”來通知計算機“執行一次換行操作”,或者用“\t”來執行前進一個tab符的操作,等等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450570.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450570.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450570.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java日期工具類DateUtil

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 DateUtil類 [java] view plain copy package com.util; import java.text.SimpleDateFormat; import java.util.ArrayList; import…

Command 傳參的幾種方式

Command可以根據CommandParameter傳參 關鍵代碼 public ICommand SubmitCommand > _submitCommand; private RelayCommand _submitCommand new RelayCommand(new Action<object>(ShowMessage)); private static void ShowMessage(object obj) {MessageBox.Show(obj.T…

phpStorm重構快捷鍵(mac系統、持續更新)

參考 https://learnku.com/laravel/t/5420/your-keyboard-shortcuts-please 1、ctrlaltf 將表達式提取出來使其成為類的屬性&#xff0c;并自動更新引用。 2、ctrlaltp 將表達式變成由參數傳入 3、crtlF6 修改函數簽名&#xff08;函數名&#xff0c;函數參數&#xff09…

python -m xxx.py和python xxx.py的區別

先看下python -m site作用是顯示sys.path的值內容&#xff0c;也就是python搜索模塊的目錄&#xff0c;作用類似于linux下的PATH python -m SimpleHTTPServer 會在sys.path的所有路徑下查找SimpleHTTPServer.py文件&#xff1b; 而python SimpleHTTPServer.py則是在當前查找文…

C語言多維數組與多級指針

多維數組與多級指針也是初學者感覺迷糊的一個地方。超過二維的數組和超過二級的指針其實并不多用。如果能弄明白二維數組與二級指針&#xff0c;那二維以上的也不是什么問題了。所以本節重點討論二維數組與二級指針。一、二維數組 1、假想中的二維數組布局我們前面討論過&…

spring-data-jpa 使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 只是記錄下使用方法 &#xff1a; 1. RPC接口 service實現類調用&#xff0c;PageRequest對象會實現分頁、排序。 Overridepublic Obj…

docker的安裝與安裝mysql(mac,centos為例)

一、mac安裝docker 1、去這個網站下載安裝https://www.docker.com/get-started 2、運行docker 運行開啟docker docker run -dp 80:80 docker/getting-started 二、centos8安裝docker 1、安裝docker 下載低版本的 yum install -y docker-ce --nobest 2、安裝擴展 wget http…

配置PPPOE

先配置服務端PPPOE-Server先為路由添加一個賬號為PPP所使用[PPPOE-Server]aaa [PPPOE-Server-aaa]local-user test password cipher 123 //添加一個本地賬號[PPPOE-Server-aaa]local-user test service-type ppp//設置test賬號類型為PPP賬號[PPPOE-Server]ip pool test//添加一…

eclipse棄坑記第一篇之在idea上配置Tomcat環境并創建Javaweb項目的詳細步驟原創

IntelliJ IDEA是一款功能強大的開發工具&#xff0c;在代碼自動提示、重構、J2EE支持、各類版本工具(如git、svn、github)、maven等方面都有很好的應用。 IntelliJ IDEA有免費的社區版和付費的旗艦版。免費版只支持Java等為數不多的語言和基本的IDE特性&#xff0c;旗艦版還支持…

laravel安裝prettier,git hook代碼格式化工具

1、安裝prettier的php擴展 npm install --global prettier prettier/plugin-php 2、安裝husky&#xff0c;lint-staged&#xff08;git鉤子&#xff09;使用 npm i prettier lint-staged husky -D 3、修改package.json文件 在scripts后面添加兩個函數 "husky": …

C語言指針數組和數組指針

一、指針數組和數組指針的內存布局 初學者總是分不出指針數組與數組指針的區別。其實很好理解&#xff1a;指針數組&#xff1a;首先它是一個數組&#xff0c;數組的元素都是指針&#xff0c;數組占多少個字節由數組本身決定。它是“儲存指針的數組”的簡稱。 數組指針&#xf…

求二叉樹的高度

1 int GetHeight(BinTree BT)2 {3 int HL, HR, MaxH;4 5 if(BT)6 {7 HL GetHeight(BT->Left); //求左子樹的高度8 HR GetHeight(BT->Right); //求右子樹的高度9 MaxH (HL > HR) ? HL : HR; //取左右子樹較大的高…

Json與List的相互轉換

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 問題由來&#xff1a; 最近由于做一個項目&#xff0c;項目的一個功能就是根據Listview的內容生成一個二維碼&#xff0c;然后掃描二維…

機器學習常用模型

&#xff08;原作&#xff1a;MSRA劉鐵巖著《分布式機器學習&#xff1a;算法、理論與實踐》。這一部分敘述很清晰&#xff0c;適合用于系統整理NN知識&#xff09; 線性模型 線性模型是最簡單的&#xff0c;也是最基本的機器學習模型。其數學形式如下&#xff1a;g(X;W)WTX。有…

(轉)告別程序員生涯,一點感慨,與諸君共勉

轉自&#xff1a;https://blog.csdn.net/phphot/article/details/2230411 再過幾天&#xff0c;我就正式告別程序員生涯了&#xff0c;這也是我最后一次以職業程序員身份在CSDN發表文章。小弟談談入行幾年來的感受&#xff0c;做一個人生階段的自我總結&#xff0c;同時希望能…

C語言指針與數組之間的恩恩怨怨

很多初學者弄不清指針和數組到底有什么樣的關系。我現在就告訴你&#xff1a;他們之間沒有任何關系&#xff01;只是他們經常穿著相似的衣服來逗你玩罷了。指針就是指針&#xff0c;指針變量在32 位系統下&#xff0c;永遠占4 個byte&#xff0c;其值為某一個內存的地址。指針可…

CentOS7查看開放端口命令

CentOS7查看開放端口命令CentOS7的開放關閉查看端口都是用防火墻來控制的&#xff0c;具體命令如下&#xff1a;查看已經開放的端口&#xff1a;Linux代碼 firewall-cmd --list-ports 開啟端口Linux代碼 firewall-cmd --zonepublic --add-port80/tcp --permanent 命令含義&…

referer參數和addslashes()函數的騷路子

TIPS: 此函數確實是過濾用戶輸入的&#xff0c;當gpc未開啟的時候使用addslashes()函數進行過濾&#xff0c;當開啟gpc的時候直接返回&#xff0c;那么問題就來了&#xff0c;當php開啟gpc的時候直接返回字符串&#xff0c;但是gpc是只針GET,POST,COOKIE三種超全局變量進行過濾…

MySQL 的各個json 函數說明

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 如果英文的不方便閱讀&#xff0c;請參考個人收錄的另一篇中文解說&#xff1a;MySQL中json函數說明和舉例 只是為了方便 自己用的時候…

訂單編號,遞增且不連續(php版)

1、實現方式&#xff0c;使用while循環&#xff0c;比較low&#xff0c;200w條數據 2s public function getMany ($startNum, $count) {$num $startNum;$codes[] $startNum;for($i1;$i<$count;$i){$num1 random_int(1,9);while($num $num1) {$num1 random_int(1,9);}$…