在 ANSI 兼容终端(例如 xterm、rxvt、konsole 等)里, 可以用彩色显示文本而不仅仅是黑白。
下面的语句就输出高亮的黑色背景的绿色字。
printf("\033[1;40;32m%s\033[0m", Hello,world!\n);
\033 声明了转义序列的开始,然后是 [ 开始定义颜色。后面的 1 定义了高亮显示字符。然后是背景颜色,这里面是40,表示黑色背景。接着是前景颜色,这里面是32,表示绿色。我们用 \033[0m 关闭转义序列, \033[0m 是终端默认颜色。
通过上面的介绍,就知道了如何输出彩色字符了。
下面是对于彩色字符颜色的一些定义:
前景 背景 颜色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色
代码 意义
-------------------------
0 终端默认设置
1 高亮显示
4 使用下划线
5 闪烁
7 反白显示
8 不可见
通过串口收发或显示字符时,我们使用的通常是字符的ASCII码。对于非控制字符,也即键入命令时我们可能使用到的命令字符,在控制台中我们使用了ASCII码值从0x20~0x7e之间的字符。对于控制字符,在常用字符ASCII码对照表中我们可以找到Enter键、Backspace(退格)键以及ESC键的ASCII码,但是却没有上下左右方向键以及Home、End键对应的ASCII码,通过对键盘输入字符的串口收发测试发现,如果在测试时按下了方向键则串口在每次按键后会连续发送出3字节数据,前两字节所有方向键的数据相同,分别是0x1b,0x5b,第3字节对应不同的按键,上下右左方向键分别对应的值为:0x41、0x42、0x43、0x44,Home和End键对应的值为0x48和0x4b。故要检测键盘是否键入了方向键,需要向串口连续读取三字节的数据,同理,要控制光标向左、向右移动或Home、End也需要连续一次向串口发送3字节数据。
send_char_com(0x1B); 单字节发
send_string_com("[34m");
在 ANSI 兼容终端(例如 xterm、rxvt、konsole 等)里, 可以用彩色显示文本而不仅仅是黑白。但是我们自己编写的程序能否输出彩色的字符呢?当然答案是肯定的。下面的语句就输出高亮的黑色背景的绿色字。
printf("\033[1;40;32m%s\033[0m",” Hello,NSFocus\n”);
\033 声明了转义序列的开始,然后是 [ 开始定义颜色。后面的 1 定义了高亮显示字符。然后是背景颜色,这里面是40,表示黑色背景。接着是前景颜色,这里面是32,表示绿色。我们用 \033[0m 关闭转义序列, \033[0m 是终端默认颜色。
通过上面的介绍,就知道了如何输出彩色字符了。因此,我就不再多说了。下面是对于彩色字符颜色的一些定义:
前景 背景 颜色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色
代码 意义
-------------------------
0 终端默认设置
1 高亮显示
4 使用下划线
5 闪烁
7 反白显示
8 不可见
下面给出了一个C语言的示例:
///////////////////////////////////////////////////////////////////////////////
//filename:tracelog.c
#include <stdio.h>
int main(int argc,char **argv)
{
unsigned char attr[]={0,1,4,5,7,8};
unsigned char fore[]={30,31,32,33,34,35,36,37};
unsigned char back[]={40,41,42,43,44,45,46,47};
int adx,fdx,bdx;
for(bdx=0;bdx<sizeof(back);bdx++)
{
for(fdx=0;fdx<sizeof(fore);fdx++)
{
for(adx=0;adx<sizeof(attr);adx++)
{
printf("\033[%d;%d;%dmhello,NSFocus!!!\033[0m",
attr[adx],fore[fdx],back[bdx]);
printf("<==attr=%d,fore=%d,back=%d\n",
attr[adx],fore[fdx],back[bdx]);
}
}
printf("\n");
}
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=637294
黑色 红色 绿色 棕色 蓝色 紫色
浅蓝色 灰色
请在回复的时候把上面的颜色字代码复制到写字板上!
第一篇:如何让自己的昵称动起来,字变大?
进入[资料配置],在[修改昵称]中,在你的昵称前加上
<marquee><h1>, <marquee>是让昵称动起来,<h1>、<h2>、
<h3>、<h4>、<h5>、<h6>是让字大起来。
第二篇:如何做彩色签名?
它是采用几个字符串来作为颜色控制符的,只要在你想要改变颜
色的字符前加上一串颜色控制符,你就可以得到一段彩色文
字了。网易共提供了9个颜色控制字符串,你最多可以在网
易签名档里设置8种颜色,它们分别是:
[30m 黑色 [31m 红色 [32m 绿色 [33m 棕色
[34m 蓝色 [35m 紫色 [36m 浅蓝色 [37m 灰色
[38m 灰色
如果你想让“我是一名新手,请各位大侠多多指教”这名话
变成红色的话,你只要在这句话的前面加上“■[31m”这个
字符串就行了,也就是说,只要你在网易签名档中加入
“■[31m我是一名新手,请各位大侠多多指教”这段话,
在发贴子时指定用这个签名档,别人就可在你的贴子下面看
到一句红色的“我是一名新手,请各位大侠多多指教” 的
签名了。就这么简单!不过你不要高兴得太早了,你一定
看到那个黑色的方块块了,那是个什么字符,又是怎么得
来的呢?请看下文。
这个字符其实就是ESC键的ASCII码,在一般情况下显示
为空格,而不是上面的黑色方块块,但千万要注意不是按空
格键得来的空格!它在一般的文字处理工具中是无法通过键
盘输入得到的!呵呵!你没被吓着吧?得到它是有点困难,
不过不要急,还是有办法的。既然它无法在一般文字处理工
具中通过键盘输入得到,那么我们只有动用DEBUG或PCTOOL
工具了。你可以先用记事本(NotePad)建立一个含有一个
空格(16进制代码为0x20)的文本文件(如“ [34m”),
再用上面提到的两个工具把这个文件中的空格字符改为
ESC键字符(即"0x20"改为“0x1B”),再保存文件,这样
你的这个文本文件中那个普通空格就变为ESC键这个特殊空
格了。打开你的签名,将此文本文件中的“ [34m”复制,
粘贴在你想变色的文字前即可,在你的签名中不同位置粘
贴不同的内容(如:“ [33m"),你将会得到五颜六色的
签名。
为什么要用这个特殊的字符来控制颜色呢?这是因为
早期的终端仿真程序就是用0x1B(ESC字符)这个字符作为
“换码序列”,ESC字符后面的数字通常用于控制终端光
标的位置或者字符的颜色。
可是我既不会用DEBUG,也不会用PCTOOL,怎么办?
是不是没的办法了呢?不是!还是有捷径可走的,呵呵!
什么捷径?那当然是借啰,向别人借!虽然你不能用键?
盘输入这个字符,但它可在文本文件中保存,也可在
WINDOWS的剪贴板,电子邮件,网易的消息发送中传递,
所以你尽可以通过这些途径向你的那些用上了彩色签名
的朋友去借,我相信他(她)绝对不会因为一个字符而
跟你过不去的。呵呵!祝你好运!
文章评论(0条评论)
登录后参与讨论