【C】十六进制(Hex)与ASCII

十六进制(Hex)与ASCII的关系

十六进制(Hexadecimal)和ASCII(American Standard Code for Information Interchange)是两种不同的编码方式,但它们可以相互转换,用于表示字符或数据。


1. ASCII码:字符的数字化表示

ASCII 是一种字符编码标准,用 7位二进制数(0~127) 表示英文字母、数字、标点符号和控制字符(如换行、退格)。

  • 可打印字符:例如 A65(十进制),a97
  • 控制字符:例如 换行(LF)10回车(CR)13

ASCII码表(部分)

字符十进制十六进制二进制
A650x4101000001
a970x6101100001
0480x3000110000
!330x2100100001

2. 十六进制:更紧凑的二进制表示

十六进制(Hex)是二进制的一种简写形式,每 4位二进制 对应 1位十六进制(0~9, A~F)。

  • 为什么用十六进制?
    • 二进制(如 01000001)太长,十六进制(0x41)更易读。
    • 计算机底层数据(如内存地址、机器码)通常用十六进制表示。

二进制 ↔ 十六进制转换

二进制十六进制
00000
01015
1010A
1111F

3. 十六进制与ASCII的转换

(1)ASCII字符 → 十六进制

例如字符 'A'

  1. 查ASCII表:A → 十进制 65
  2. 十进制转十六进制:650x41

(2)十六进制 → ASCII字符

例如 0x61

  1. 十六进制转十进制:0x6197
  2. 查ASCII表:97 → 字符 'a'

4. 实际应用示例

案例1:字符串 "Hello" 的十六进制表示

字符ASCII十进制十六进制
H720x48
e1010x65
l1080x6C
l1080x6C
o1110x6F

十六进制序列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';)。
  • Pythonbytes.fromhex("48656C6C6F")b"Hello"

总结

  • ASCII 是字符的数字编码(如 A65)。
  • 十六进制 是二进制的紧凑表示(如 650x41)。
  • 转换关系
    字符 ↔ 十进制 ↔ 十六进制 ↔ 二进制
  • 应用场景:网络协议、文件解析、逆向工程、嵌入式调试等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值