Python 的 int() 函数可通过 base=16 将十六进制字符串(支持 0x 前缀及大小写字母)转为十进制整数,非法输入抛 ValueError,亦可批量转换或封装安全函数。

Python 的 int() 函数可以直接将十六进制字符串转换为十进制整数,只需指定 base=16 即可。 它支持带 0x 前缀和不带前缀的十六进制字符串,自动识别并处理大小写字母(a–f 或 A–F)。
基础用法:直接转换单个十六进制字符串
int() 的第二个参数 base 设为 16,就能把合法的十六进制表示转成十进制整数:
-
int("FF", 16)→ 返回255 -
int("1a", 16)→ 返回26(不区分大小写) -
int("0xFF", 16)→ 返回255(支持 0x 前缀) -
int("0XABCD", 16)→ 返回43981
常见错误与注意事项
传入非法字符或格式会触发 ValueError,需注意以下几点:
- 字符串不能含空格、中文、字母以外的符号(如
"A B"或"G1"报错) - 空字符串
""或只有前缀如"0x"会报错 - 前缀
0x不是必须的,但若写了就必须小写 x(0X也支持;0h或0H不行) - 负号需放在最前面,如
"-FF"→-255,但"0x-FF"是非法的
批量转换与实用封装
处理多个值时,可结合列表推导式或封装成函数提升可读性:
立即学习“Python免费学习笔记(深入)”;
- 批量转换:
[int(x, 16) for x in ["10", "FF", "a0"]]→[16, 255, 160] - 安全转换函数(避免报错):
def hex_to_int(s):
try:
return int(s.strip(), 16)
except (ValueError, AttributeError):
return None调用 hex_to_int(" 0x1F ") 返回 31,无效输入返回 None。
和其它进制转换对比(补充理解)
int() 是通用进制解析函数,不只是用于十六进制:
-
int("1010", 2)→10(二进制转十进制) -
int("17", 8)→15(八进制转十进制) -
int("Z", 36)→35(36 进制中 Z 表示 35)
只要 base 在 2–36 范围内,且字符串只含该进制允许的字符,int() 都能正确解析。










