[参考]ASCII对照表 及 字符与二进制、十进制、16进制之间的转化(C/C++)
第1节 ASCII码对照表
ASCII(American Standard Code for Information Interchange,美国信息互换标准代码,ASCⅡ)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
ASCII第一次以规范标准的型态发表是在1967年,最后一次更新则是在1986年,至今为止共定义了128个字符,其中33个字符无法显示(这是以现今操作系统为依归,但在DOS模式下可显示出一些诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符,控制字符的用途主要是用来操控已经处理过的文字,在33个字符之外的是95个可显示的字符,包含用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。
1.1 ASCII控制字符
二进制 |
十进制 |
十六进制 |
缩写 |
名称/意义 |
0000 0000 |
0 |
00 |
NUL |
空字符(Null) |
0000 0001 |
1 |
01 |
SOH |
标题开始 |
0000 0010 |
2 |
02 |
STX |
本文开始 |
0000 0011 |
3 |
03 |
ETX |
本文结束 |
0000 0100 |
4 |
04 |
EOT |
传输结束 |
0000 0101 |
5 |
05 |
ENQ |
请求 |
0000 0110 |
6 |
06 |
ACK |
确认回应 |
0000 0111 |
7 |
07 |
BEL |
响铃 |
0000 1000 |
8 |
08 |
BS |
退格 |
0000 1001 |
9 |
09 |
HT |
水平定位符号 |
0000 1010 |
10 |
0A |
LF |
换行键 |
0000 1011 |
11 |
0B |
VT |
垂直定位符号 |
0000 1100 |
12 |
0C |
FF |
换页键 |
0000 1101 |
13 |
0D |
CR |
归位键 |
0000 1110 |
14 |
0E |
SO |
取消变换(Shift out) |
0000 1111 |
15 |
0F |
SI |
启用变换(Shift in) |
0001 0000 |
16 |
10 |
DLE |
跳出数据通讯 |
0001 0001 |
17 |
11 |
DC1 |
设备控制一(XON 启用软件速度控制) |
0001 0010 |
18 |
12 |
DC2 |
设备控制二 |
0001 0011 |
19 |
13 |
DC3 |
设备控制三(XOFF 停用软件速度控制) |
0001 0100 |
20 |
14 |
DC4 |
设备控制四 |
0001 0101 |
21 |
15 |
NAK |
确认失败回应 |
0001 0110 |
22 |
16 |
SYN |
同步用暂停 |
0001 0111 |
23 |
17 |
ETB |
区块传输结束 |
0001 1000 |
24 |
18 |
CAN |
取消 |
0001 1001 |
25 |
19 |
EM |
连接介质中断 |
0001 1010 |
26 |
1A |
SUB |
替换 |
0001 1011 |
27 |
1B |
ESC |
跳出 |
0001 1100 |
28 |
1C |
FS |
文件分割符 |
0001 1101 |
29 |
1D |
GS |
组群分隔符 |
0001 1110 |
30 |
1E |
RS |
记录分隔符 |
0001 1111 |
31 |
1F |
US |
单元分隔符 |
0111 1111 |
127 |
7F |
DEL |
删除 |
1.2 ASCII可显示字符
二进制 |
十进制 |
十六进制 |
图形 |
二进制 |
十进制 |
十六进制 |
图形 |
二进制 |
十进制 |
十六进制 |
图形 |
0010 0000 |
32 |
20 |
(空格) |
0100 0000 |
64 |
40 |
@ |
0110 0000 |
96 |
60 |
` |
0010 0001 |
33 |
21 |
! |
0100 0001 |
65 |
41 |
A |
0110 0001 |
97 |
61 |
a |
0010 0010 |
34 |
22 |
" |
0100 0010 |
66 |
42 |
B |
0110 0010 |
98 |
62 |
b |
0010 0011 |
35 |
23 |
# |
0100 0011 |
67 |
43 |
C |
0110 0011 |
99 |
63 |
c |
0010 0100 |
36 |
24 |
$ |
0100 0100 |
68 |
44 |
D |
0110 0100 |
100 |
64 |
d |
0010 0101 |
37 |
25 |
% |
0100 0101 |
69 |
45 |
E |
0110 0101 |
101 |
65 |
e |
0010 0110 |
38 |
26 |
& |
0100 0110 |
70 |
46 |
F |
0110 0110 |
102 |
66 |
f |
0010 0111 |
39 |
27 |
' |
0100 0111 |
71 |
47 |
G |
0110 0111 |
103 |
67 |
g |
0010 1000 |
40 |
28 |
( |
0100 1000 |
72 |
48 |
H |
0110 1000 |
104 |
68 |
h |
0010 1001 |
41 |
29 |
) |
0100 1001 |
73 |
49 |
I |
0110 1001 |
105 |
69 |
i |
0010 1010 |
42 |
2A |
* |
0100 1010 |
74 |
4A |
J |
0110 1010 |
106 |
6A |
j |
0010 1011 |
43 |
2B |
+ |
0100 1011 |
75 |
4B |
K |
0110 1011 |
107 |
6B |
k |
0010 1100 |
44 |
2C |
, |
0100 1100 |
76 |
4C |
L |
0110 1100 |
108 |
6C |
l |
0010 1101 |
45 |
2D |
- |
0100 1101 |
77 |
4D |
M |
0110 1101 |
109 |
6D |
m |
0010 1110 |
46 |
2E |
. |
0100 1110 |
78 |
4E |
N |
0110 1110 |
110 |
6E |
n |
0010 1111 |
47 |
2F |
/ |
0100 1111 |
79 |
4F |
O |
0110 1111 |
111 |
6F |
o |
0011 0000 |
48 |
30 |
0 |
0101 0000 |
80 |
50 |
P |
0111 0000 |
112 |
70 |
p |
0011 0001 |
49 |
31 |
1 |
0101 0001 |
81 |
51 |
Q |
0111 0001 |
113 |
71 |
q |
0011 0010 |
50 |
32 |
2 |
0101 0010 |
82 |
52 |
R |
0111 0010 |
114 |
72 |
r |
0011 0011 |
51 |
33 |
3 |
0101 0011 |
83 |
53 |
S |
0111 0011 |
115 |
73 |
s |
0011 0100 |
52 |
34 |
4 |
0101 0100 |
84 |
54 |
T |
0111 0100 |
116 |
74 |
t |
0011 0101 |
53 |
35 |
5 |
0101 0101 |
85 |
55 |
U |
0111 0101 |
117 |
75 |
u |
0011 0110 |
54 |
36 |
6 |
0101 0110 |
86 |
56 |
V |
0111 0110 |
118 |
76 |
v |
0011 0111 |
55 |
37 |
7 |
0101 0111 |
87 |
57 |
W |
0111 0111 |
119 |
77 |
w |
0011 1000 |
56 |
38 |
8 |
0101 1000 |
88 |
58 |
X |
0111 1000 |
120 |
78 |
x |
0011 1001 |
57 |
39 |
9 |
0101 1001 |
89 |
59 |
Y |
0111 1001 |
121 |
79 |
y |
0011 1010 |
58 |
3A |
: |
0101 1010 |
90 |
5A |
Z |
0111 1010 |
122 |
7A |
z |
0011 1011 |
59 |
3B |
; |
0101 1011 |
91 |
5B |
[ |
0111 1011 |
123 |
7B |
{ |
0011 1100 |
60 |
3C |
< |
0101 1100 |
92 |
5C |
\ |
0111 1100 |
124 |
7C |
| |
0011 1101 |
61 |
3D |
= |
0101 1101 |
93 |
5D |
] |
0111 1101 |
125 |
7D |
} |
0011 1110 |
62 |
3E |
> |
0101 1110 |
94 |
5E |
^ |
0111 1110 |
126 |
7E |
~ |
0011 1111 |
63 |
3F |
? |
0101 1111 |
95 |
5F |
_ |
第2节 字符的进制转换
2.1 获取字符(8位)的上四位和下四位
举例1:字符‘a’,它对应的二进制(或称ASCII码)为0110 0001,该二进制的上四位为0110,下四位为0001,这两个二进制对应的十六进制为6和1。
举例2:字符‘d’,它对应的二进制(或称ASCII码)为0110 0100,该二进制的上四位为0110,下四位为0100,这两个二进制对应的十六进制为6和4。
源代码:
#include<iostream> // 核心函数 unsigned char* Char2(unsigned char ch){ static unsigned char szHex[2]; szHex[0] = ch/16; szHex[1] = ch%16; return &szHex[0]; } // 调试部分 void main (){ unsigned char* char_buff; char_buff = Char2('a'); system("pause"); } |
由于二进制不好输出,这里通过调试查看char_buff的结果:字符’o’的上四位a=’\x6’,下四位b=’\xf’。其中\x表示16进制,也就是说a的16进制数为6,b的十六进制数为f,各自对应的十进制数为6和15。
2.2 获取字符(上表中的‘图形’)所对应的 十六进制字符
举例3:(续例1)字符‘a’,它对应的16进制为61,若要在屏幕输出两个字符6和1,需要将‘a’转化为两个字符,这两个字符的ASCII码为0011 0110,0011 0001。
举例4:字符‘o’,它对应的16进制为6F,若要在屏幕输出两个字符6和F,需要将‘o’转化为两个字符,这两个字符的ASCII码为0011 0110,0100 0110。
#include<iostream> #include<stdlib.h> using namespace std; unsigned char* Char2Hex(unsigned char ch){ unsigned char byte[2],i; static unsigned char szHex[2]; byte[0] = ch/16; // 获得ch字符(8位)的上四位 byte[1] = ch%16; // 获得ch字符(8位)的下四位 for(i=0; i<2; i++){ if(byte[i] >= 0 && byte[i] <= 9) szHex[i] = '0' + byte[i]; else szHex[i] = 'a' + byte[i] - 10; } return &szHex[0]; } void main (){ unsigned char* char_buff; char_buff = Char2Hex('o'); cout<<char_buff[0]<<endl; cout<<char_buff[1]<<endl; system("pause"); } |
输出结果:
2.3 获取字符对应的十六进制字符的第二种方法(傻瓜式)
根据2.1节的获取8进制字符的上4位、下4位的方法,我联想到了一个新的方法来获取其16进制的字符。结果同2.2节,但原理很简单:
举例5:字符‘o’,它的ASCII码为0110 1111,上四位0110,下四位1111,这两个二进制对应的十进制分别为6和15。和通过一个和F。
这个unsigned char数组的构造为:char_map[17] = "0123456789ABCDEF"; 具体代码如下。结果与2.2节一致。
#include<iostream> #include<stdlib.h> using namespace std; // 用一个字符数组做映射 unsigned char char_map[17] = "0123456789ABCDEF"; //unsigned char char_map[16] = {'0','1','2','3','4','5','6','7','8','9', // 'A','B','C','D','E','F'}; // 核心函数 仍然是2.1节中的代码 unsigned char* Char2(unsigned char ch){ static unsigned char szHex[2]; szHex[0] = ch/16; szHex[1] = ch%16; return &szHex[0]; } // 调试部分 void main (){ unsigned char* char_buff; char_buff = Char2('o'); // 这里将char类型的char_buff当数使用 cout<<char_map[char_buff[0]]<<endl; cout<<char_map[char_buff[1]]<<endl; system("pause"); } |
输出结果:
2.4 递归的方法获取字符对应的二进制字符
举例6:字符‘a’,它对应的ASCII码为0011 0110,没错我就是要在屏幕上输出0011 0110!!!
具体的代码贴在下面,注释写的很清楚,需要的话可以仔细研究一下。
其实这与“中序二叉树遍历“算法类似
#include<iostream> #include<stdlib.h> using namespace std; // 核心函数 // ch:传入的字符; n:除数,n:除数,它等于当前ch可能到的最大值的根; // m:指针,用于索引数组,初始值为0; out_bin[]:输出的二进制字符串 void Char2Bin(unsigned char ch,int n, int *m, unsigned char out_bin[]){ if (n>4){ // ch/n和ch%n是为4位的二进制(最大值可以用4位的二进制表示,实际它还是unsigned char类型的,占用8位) // 要获取4位二进制的上2位和下二位,除数n=2^(4/2)=4 Char2Bin(ch/n,n/4,m,out_bin); Char2Bin(ch%n,n/4,m,out_bin); } else if (n>2){ // ch/n和ch%n是2位的二进制 // 要获取它的上1位和下一位,除数n=2^(2/2)=2 Char2Bin(ch/n,n/2,m,out_bin); Char2Bin(ch%n,n/2,m,out_bin); } else{ // 当前ch是2位的二进制,只需将其转化为0和1即可 out_bin[(*m)++] = ch/2 + '0'; out_bin[(*m)++] = ch%2 + '0'; return; // 到这里必须返回,否则都会运行最后一行再返回,造成冗余 } out_bin[8] = '\0'; // 字符数组最后以'\0'结尾就会变成字符串, // 可以参考 http://www.runoob.com/cplusplus/cpp-strings.html } // 调试部分 void main (){ unsigned char out[9]; int m = 0; Char2Bin('a',16,&m,out); // 当前ch是8位的二进制,要获取ch的上4位和下4位,所以除数n=2^(8/2)=16 cout << out << endl; system("pause"); } |
输出结果:
[参考]ASCII对照表 及 字符与二进制、十进制、16进制之间的转化(C/C++)的更多相关文章
- c#二进制、十进制、16进制之间的转换
//十进制转二进制 Console.WriteLine(Convert.ToString(69, 2)); //十进制转八进制 Console.WriteLine(Convert.ToString(6 ...
- python常用的十进制、16进制之间的转换
一 整数之间的进制转换: hex(16) # 10进制转16进制 oct(8) # 10进制转8进制 bin(8) # 10进制转2进制 二 字符串转整数 int(') # 字符串转换成10进制整数 ...
- 水题T,二进制转16进制
输入一个2进制的数,要求输出该2进制数的16进制表示. 在16进制的表示中,A-F表示10-15 Input第1行是测试数据的组数n,后面跟着n行输入.每组测试数据占1行,包括一个以0和1组成的字符串 ...
- js 二进制转换为16进制数
<!DOCTYPE html> <html> <head> <title>远程监控</title> </head> <bo ...
- 二进制转16进制JAVA代码
public class Binary2Hex { public static void main(String[] args) { String bString ="10101000&qu ...
- Ascii码 、16进制与 char
对于一个非计算机专业出身的人,以前只知道计算机中所有的数据都是以二进制形式进行存储,计算,通信的.但是人类文明中,主要的信息展现以文本的形式展现的.如果使用内存中的0和1来表示文本一直 ...
- 16进制串hex与ASCII字符串相互转换
提供两个函数,方便十六进制串与ASCII 字符串之间的相互转换,使用函数需要注意的是返回的串是在堆上通过 calloc 分配的,所以,记得使用完返回值释放该块,并且将指向该块的指针 =NULL . c ...
- 16进制串与ASCII字符串相互转换
提供两个函数,方便十六进制串与ASCII 字符串之间的相互转换,使用函数需要注意的是返回的串是在堆上通过 calloc 分配的,所以,记得使用完返回值释放该块,并且将指向该块的指针 =NULL .// ...
- 16进制ascii码转化为对应的字符,付ipmitool查询硬件信息
最近工作需要在用ipmitool查询服务器硬件信息.ipmitool查询硬件信息 比如电源,使用命令: 获取PSU0信息:Ipmitool raw 0x3a 0x71 0x00: 获取PSU1信息:I ...
随机推荐
- 关于Activity的getReferrer():如何在Activity中获取调用者?
http://blog.csdn.net/u013553529/article/details/53856800 关于Activity的getReferrer()之一:如何在Activity中获取调用 ...
- 微信小程序 --- 页面跳转
第一种:wx.navigateTo({}); 跳转: 注意:这种跳转回触发当前页面的 onHide 方法,将当前页面隐藏,然后显示跳转页面.所以可以返回,返回的时候触发 onShow方法进行显示: ( ...
- python下几种打开文件的方式
昨天看完了这本python进阶,感觉这本书对我启发很大,做了三张纸的笔记,方便我在遇到问题的时候翻阅,然后寻找可能的解决方案.作为一个使用Python一年的小白,虽然说不是小白,但是这一年来基本上是用 ...
- Yii 后台防止表单提交
第一种方法: 在AR类中设置rules()方法里面设置该属性为unique属性 Class Item extends \yii\db\ActiveRecord{ public function rul ...
- yii2 的 Url::to() 和 Url::toRoute()
关于Url类的操作在这个页面http://www.yiichina.com/doc/guide/2.0/helper-url: Url::to() 和 toRoute() 非常类似.这两个方法的唯一区 ...
- [ASP.NET]从Request.Url获取根网址的最简单方法
在拼接绝对路径的网址时,经常需要从Request.Url中获取根网址(比如http://www.cnblogs.com),然后与相对路径一起拼接为绝对路径. 以前的做法如下: var uri = Re ...
- SQL---->mySQl数据库1------数据库的增删改查备份恢复
1.在终端输入:mysql -uroot -p 然后输入密码,进入客户端 2.输入:\s 3.创建数据库 3.1创建字符集是utf-8的数据库 3.2创建带校验规则的数据库,校验规则可以在a ...
- 删除 oracle
C:\app\Administrator\product\11.2.0\client_1\deinstall 用这个批处理文件,会把oracle全部删除,除这个目录本身以外 .另外它不删除服务,即使服 ...
- Django - Cookie、Session、自定义分页和Django分页器
2. 今日内容 https://www.cnblogs.com/liwenzhou/p/8343243.html 1. Cookie和Session 1. Cookie 服务端: 1. 生成字符串 2 ...
- DevOps 创建pipline报错:The value specified for SourceVersion is not a valid commit ID
报错内容 The value specified for SourceVersion is not a valid commit ID 解决 官方给出的解答: Thank you for your f ...