echo -e 下面8进制ASCII code颜色代码

本文介绍如何使用echo命令结合ANSI转义序列在终端中设置文本的颜色和样式,包括前景色、背景色及各种文本效果。
NAME
       echo - display a line of text
SYNOPSIS
       echo [OPTION]... [STRING]...

-e     enable interpretation of backslash escapes
If -e is in effect, the following sequences are recognized:
       \0NNN  the character whose ASCII code is NNN (octal)
echo -e "\033[0;31;0m"
无颜色         
echo -e "\033[0;31;1m"  
显示 \033[0;31 的颜色 当前为红色
echo -e "\033[0;31;2m"
显示 \033[0;31 的稍浅的颜色 当前为浅红色
echo -e "\033[0;31;4m"
显示 \033[0;31 的稍浅的颜色加下划线 当前为浅红色下划线
echo -e "\033[0;31;5m"
显示 \033[0;31 的稍浅的颜色并闪烁 当前为浅红色闪烁
echo -e "\033[0;31;7m"
显示 \033[0;31 的全填充颜色  当前为红色填充

颜色代码 
echo -e "\033[0;30;1m"  无颜色 
echo -e "\033[0;31;1m"  红色
echo -e "\033[0;32;1m   绿色
echo -e "\033[0;33;1m"  黄色
echo -e "\033[0;35;1m"  蓝色
echo -e "\033[0;36;1m"  紫色
echo -e "\033[0;37;1m"  青绿
echo -e "\033[0;38;1m"  白色 
文本终端的颜色可以使用“ANSI非常规字符序列”来生成:
 
echo -e "\033[背景;前景;光标m ME \033[0m"
举例:echo -e "\033[44;37;5m ME \033[0m COOL"
 
以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然后重新设置屏幕到缺省设置,输出字符 “COOL”。“e”是命令 echo 的一个可选项,它用于激活特殊字符的解析器。“\033”引导非常规字符序列。“m”意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是 “44;37;5” 和“0”。修改“44;37;5”可以生成不同颜色的组合,数值和编码的前后顺序没有关系。可以选择的编码如下所示:
 
前景      背景       颜色
---------------------------------------
30          40          黑色
31          41          红色
32          42          绿色
33          43          黄色
34          44          蓝色
35          45          紫红色
36          46          青蓝色
37          47          白色
 
代码       意义
-------------------------
0            OFF
1            高亮显示
4            下划线
5            闪烁
7            反白显示
8            不可见
 
其他有趣的代码还有:
\033[2J          清除屏幕 
\033[0q          关闭所有的键盘指示灯 
\033[1q          设置“滚动锁定”指示灯 (Scroll Lock) 
\033[2q          设置“数值锁定”指示灯 (Num Lock) 
\033[3q          设置“大写锁定”指示灯 (Caps Lock) 
\033[15:40H     把关闭移动到第15行,40列 
\007              发蜂鸣生beep
 
RedHat的字体和背景颜色的改变方法:
命令:
PS1="[\e[32;1m\u@\h \W]\\$" 
或 
export PS1="[\e[32;1m\u@\h \W]\\$" 两者的区别请查看环境变量的相关资料
解释:
\e[32;1m:这就是控制字体和背景颜色的转义字符,30~37是字体颜色、40~47是背景颜色
例子中的32;1m数字的位置是可以对调的如\e[1;32m,如果是在X环境下可以更换一下1的范围0~10,可能有的没用处:0或者不写(\e [0;32m或\e[;32m)显示浅颜色,1:显示高亮 4:加下划线.....如果改后的效果不好,但是又还原不了,那就不写m前面的数字,如\e[32;m,或者直接注销再登陆
\u \h \W:这是一些转义字符,下面详细解释:
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
\n :新建一行
字体并不局限于一个颜色,可以有多个颜色:
PS1="[\e[32;1m\u@\e[35;1m\h \e[31;1m\W]\\$"
以上两个命令在注销后再登陆就失效了,用下面方法使其永久生效:
vi /etc/profile 
在“export PATH .....”下面添加一行:export PS1="[\e[32;1m\u@\h \W]\\$"
注销再登陆,就成功了,如果没生效,使用source /etc/profile 命令试试,或者直接重启机器。
 
 
可以选择的编码如下所示:
编码 颜色/动作
0    重新设置属性到缺省设置
1    设置粗体
2    设置一半亮度(模拟彩色显示器的颜色)
4    设置下划线(模拟彩色显示器的颜色)
5    设置闪烁
7    设置反向图象
22  设置一般密度
24  关闭下划线
25  关闭闪烁
27  关闭反向图象
30  设置黑色前景
31  设置红色前景
32  设置绿色前景
33  设置棕色前景
34  设置蓝色前景
35  设置紫色前景
36  设置青色前景
37  设置白色前景
38  在缺省的前景颜色上设置下划线
39  在缺省的前景颜色上关闭下划线
40  设置黑色背景
41  设置红色背景
42  设置绿色背景
43  设置棕色背景
44  设置蓝色背景
45  设置紫色背景
46  设置青色背景
47  设置白色背景
49  设置缺省黑色背景
<think>好的,我现在需要解决用户的问题:“如何以十六进制显示UTF-8编码的数值”。用户引用了三个相关的资料,我需要先理解这些参考资料的内容,然后结合自己的知识来组织答案。 首先,用户提供的引用[1]提到,Unicode是UTF-8的基础编码,UTF-8是Unicode的实现方式之一,并且两者之间有对应关系。这可能意味着转换过程需要先将字符转换为Unicode码点,然后再根据UTF-8的规则进行编码。而引用[2]和[3]分别提供了在线转换工具和JavaScript实现的例子,说明用户可能需要具体的步骤或代码示例。 接下来,我需要回忆UTF-8的编码规则。UTF-8使用1到4个字节来表示不同的Unicode码点。例如,对于ASCII字符(U+0000到U+007F),UTF-8使用一个字节,直接对应十六进制值。而其他字符则需要多个字节,每个字节的高位有特定的前缀。例如,两字节的字符以110开头,三字节以1110开头,四字节以11110开头,后续的字节则以10开头。 用户的问题是如何将UTF-8编码后的字节以十六进制显示。所以步骤应该是:首先将字符串转换为UTF-8的字节序列,然后将每个字节转换为两位的十六进制数,最后拼接起来。例如,汉字“中”的Unicode码点是U+4E2D,对应的UTF-8编码是三个字节:E4 B8 AD,转换为十六进制显示就是E4B8AD。 现在需要考虑不同编程语言的实现方法。用户提供的引用中提到了PHP、JavaScript,可能需要给出这些语言的示例。例如,在PHP中,可以使用bin2hex函数;在JavaScript中,可以通过TextEncoder将字符串编码为字节数组,然后逐个字节转换为十六进制。 需要注意的是,不同语言处理字符串和字节的方式可能不同,比如PHP中字符串可以直接处理,而JavaScript可能需要使用类型化数组来处理字节。同时,要确保编码正确,比如在Python中字符串需要先编码为UTF-8的bytes对象,再进行十六进制转换。 另外,用户可能还关心手动转换的方法,比如如何根据Unicode码点计算出UTF-8的字节序列,再转成十六进制。这部分需要详细说明UTF-8的编码规则,并举例说明计算过程,比如对于码点U+4E2D,如何得到E4 B8 AD。 最后,根据用户的要求,生成相关问题。可能的问题包括不同编程语言的具体实现、手动转换的步骤、编码规则的区别等。 总结,回答的结构应该是: 1. 概述UTF-8和十六进制的关系。 2. 分步骤说明转换方法。 3. 提供不同语言的代码示例(PHP、JavaScript、Python)。 4. 手动转换的示例。 5. 相关问题。</think>### 如何以十六进制显示UTF-8编码的数值? UTF-8编码的十六进制显示需要将字符转换为UTF-8字节序列,再将每个字节转为十六进制形式。以下是具体步骤和示例: --- #### **步骤说明** 1. **字符 → Unicode码点** 通过Unicode标准获取字符的码点(如“中”的码点为`U+4E2D`)。 2. **Unicode码点 → UTF-8字节序列** 根据UTF-8编码规则将码点转换为1-4个字节(如`U+4E2D`对应字节`0xE4 0xB8 0xAD`)[^1]。 3. **字节序列 → 十六进制字符串** 将每个字节转换为两位十六进制数并拼接(如`E4B8AD`)。 --- #### **代码示例** ##### **PHP** ```php $str = "中"; $utf8Bytes = bin2hex($str); // 直接转为UTF-8十六进制 echo $utf8Bytes; // 输出: e4b8ad ``` ##### **JavaScript** ```javascript function strToUtf8Hex(str) { const encoder = new TextEncoder(); const bytes = encoder.encode(str); return Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join(''); } console.log(strToUtf8Hex("中")); // 输出: e4b8ad ``` ##### **Python** ```python s = "中" hex_str = s.encode('utf-8').hex() print(hex_str) # 输出: e4b8ad ``` --- #### **手动转换示例(以“中”为例)** 1. **获取Unicode码点**:`U+4E2D`(十进制`20013`)。 2. **转换为UTF-8字节**: - `4E2D`的二进制:`0100 1110 0010 1101`。 - UTF-8三字节规则:`1110xxxx 10xxxxxx 10xxxxxx`。 - 填充后得到三字节:`11100100 10111000 10101101`。 - 转为十六进制:`E4 B8 AD`。 3. **拼接结果**:`E4B8AD`。 --- #### **注意事项** - 多字节字符需按UTF-8规则分段。 - 不同编程语言需注意字符串编码的默认行为(如Python 3默认使用UTF-8)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值