什么是换码符(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.mzph.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);}$…