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