十六进制(Hex)与ASCII的关系
十六进制(Hexadecimal)和ASCII(American Standard Code for Information Interchange)是两种不同的编码方式,但它们可以相互转换,用于表示字符或数据。
1. ASCII码:字符的数字化表示
ASCII 是一种字符编码标准,用 7位二进制数(0~127) 表示英文字母、数字、标点符号和控制字符(如换行、退格)。
- 可打印字符:例如
A→65(十进制),a→97。 - 控制字符:例如
换行(LF)→10,回车(CR)→13。
ASCII码表(部分)
| 字符 | 十进制 | 十六进制 | 二进制 |
|---|---|---|---|
A | 65 | 0x41 | 01000001 |
a | 97 | 0x61 | 01100001 |
0 | 48 | 0x30 | 00110000 |
! | 33 | 0x21 | 00100001 |
2. 十六进制:更紧凑的二进制表示
十六进制(Hex)是二进制的一种简写形式,每 4位二进制 对应 1位十六进制(0~9, A~F)。
- 为什么用十六进制?
- 二进制(如
01000001)太长,十六进制(0x41)更易读。 - 计算机底层数据(如内存地址、机器码)通常用十六进制表示。
- 二进制(如
二进制 ↔ 十六进制转换
| 二进制 | 十六进制 |
|---|---|
0000 | 0 |
0101 | 5 |
1010 | A |
1111 | F |
3. 十六进制与ASCII的转换
(1)ASCII字符 → 十六进制
例如字符 'A':
- 查ASCII表:
A→ 十进制65。 - 十进制转十六进制:
65→0x41。
(2)十六进制 → ASCII字符
例如 0x61:
- 十六进制转十进制:
0x61→97。 - 查ASCII表:
97→ 字符'a'。
4. 实际应用示例
案例1:字符串 "Hello" 的十六进制表示
| 字符 | ASCII十进制 | 十六进制 |
|---|---|---|
H | 72 | 0x48 |
e | 101 | 0x65 |
l | 108 | 0x6C |
l | 108 | 0x6C |
o | 111 | 0x6F |
十六进制序列:0x48 0x65 0x6C 0x6C 0x6F → "Hello"。
5. 扩展知识
(1)Unicode 和 UTF-8
- ASCII 只能表示128个字符,而 Unicode(如UTF-8)扩展了字符集(支持中文、emoji等)。
- UTF-8 中,一个字符可能占用 1~4个字节(十六进制表示更长)。
(2)计算机中的存储
- 内存中的数据(如文本、图片)最终都以 二进制 存储,但调试时常用 十六进制 显示(如
0xDEADBEEF)。
(3)编程中的使用
- C语言:
char c = 0x41;(等价于char c = 'A';)。 - Python:
bytes.fromhex("48656C6C6F")→b"Hello"。
总结
- ASCII 是字符的数字编码(如
A→65)。 - 十六进制 是二进制的紧凑表示(如
65→0x41)。 - 转换关系:
字符 ↔ 十进制 ↔ 十六进制 ↔ 二进制 - 应用场景:网络协议、文件解析、逆向工程、嵌入式调试等。
1万+

被折叠的 条评论
为什么被折叠?



