1. 进制的概念 #
- 进制规定「逢几进一」。
- 日常用十进制;计算机底层用二进制。
- 项目里最常见的是十六进制——用来表示颜色值、哈希、内存地址等,写法比一长串 0/1 更短。
| 进制 |
规则 |
项目中的用途 |
| 十进制 |
逢十进一 |
日常计算、业务数值 |
| 二进制 |
逢二进一 |
底层存储、位运算 |
| 十六进制 |
逢十六进一 |
颜色代码、ID、调试输出 |
- 八进制(
0o)在 Linux 文件权限等场景偶尔出现,日常 Web/后端开发很少用到。
2. 代码中的进制表示 #
dec_num = 100
bin_num = 0b1100100
hex_num = 0x64
print(dec_num, bin_num, hex_num)
3. 进制转换 #
3.1 十进制 → 其他进制字符串 #
num = 255
print(bin(num))
print(hex(num))
3.2 字符串 → 十进制整数 #
int(字符串, base) 用于解析十六进制、二进制等字符串,读接口或配置文件时很常见。
print(int("ff", 16))
print(int("11111111", 2))
print(int("0xFF", 16))
3.3 去掉前缀的格式化输出 #
- 日志或接口里常需要无前缀的十六进制,用 f-string 最方便。
num = 42
print(f"{num:x}")
print(f"{num:X}")
print(f"{num:b}")
4. 常见应用场景 #
4.1 解析颜色值 #
- 前端/CSS 中的
#FF0000 可用 int(..., 16) 拆成 RGB。
red_hex = "#FF0000"
r = int(red_hex[1:3], 16)
g = int(red_hex[3:5], 16)
b = int(red_hex[5:7], 16)
print(f"RGB: ({r}, {g}, {b})")
5. 项目开发要点 #
- 代码里写十六进制用
0x 前缀,写二进制用 0b 前缀。
- 解析外部传入的十六进制字符串用
int(s, 16),不要手写换算。
- 输出无前缀十六进制用
f"{n:x}",比 hex(n)[2:] 更清晰。
- 业务逻辑统一用十进制整数运算;进制转换主要用于展示、协议和调试。