Python int() 函数详解:类型转换与进制处理

晚来风
晚来风
发布时间:2026-10-16| 6人浏览过
原创

本文详细介绍Python中int()函数的使用方法。涵盖将浮点数、布尔值及字符串转换为整型的规则,重点解析二进制、八进制、十六进制及自定义进制的转换语法。同时指出int()无法直接处理含小数点的字符串,并提供正确的转换路径,最后列举base参数越界及非法字符导致的常见报错与解决方案。

描述

int() 函数主要用于将一个指定进制的数字型字符串,或者一个十进制数值,转换为整型数据。

语法

int(object, base)
名称说明备注
object一个数字或字符串参数

1. 数字参数可以是整数、浮点数(小数点表示和指数e表示皆可)

2. 字符串参数仅能包含在指定进制下所涵盖的字符

3. 该参数可省略

base进制数

1. 该参数可省略,省略时默认为10

2. 正整型参数,表示object所对应的进制

举例

1. 浮点数转化为整型

test = [12.96, -34.21, 12.0e3]
 
for number in test:
    print(int(number))

输出结果为:

12 -34 12000

需要注意的是,无论浮点数的小数部分是多少,使用 int() 函数进行转换时,系统会直接截断小数部分,仅保留整数部分。因此,在涉及浮点数四舍五入的计算场景中,不建议直接使用 int() 函数。

2. 二进制数转化为十进制数

test = ['111011011111', '0b101']
 
for number in test:
    print(int(number, 2))

输出结果为:

3807 5

3. 八进制数转化为十进制数

test = ['-1537202', '0o147']
 
for number in test:
    print(int(number, 8))

输出结果为:

-441986 103

4. 将十六进制数转化为十进制数

test = ['34A', '0x17']
 
for number in test:
    print(int(number, 16))

输出结果为:

842 23

5. 布尔值转换为整数

Python 中最基础的数据类型之一是布尔型,它仅包含两个值:True 和 False。当这两个值被转换为整数时,True 对应 1,False 对应 0。

>>> int(True)
1
>>> int(False)
0

6. 将整数字符串转换为整数

该函数支持将仅包含数字字符以及正负号(+/-)的字符串转换为整数。

>>> int('99')
99
>>> int('-23')
-23
>>> int('+12')
12

注意事项

1. 所有参数都省略时,返回整数0

test = int()
print(test, type(test))

输出结果为:

0 <class 'int'>

2. 试图将一个浮点数字符串转化为十进制整数时,会报错:

test = '23.1314'
print(int(test))

输出结果为:

Traceback (most recent call last): File "/Users/Test2.py", line 3, in <module> print(int(test)) ValueError: invalid literal for int() with base 10: '23.1314'

返回一个值报错:对于函数int,使用了无效的文字转化成十进制:23.1314.

正确的处理方式是,先将浮点数字符串转换为浮点数类型,然后再将该浮点数转换为整数。

test = '23.1314' 
print(int(float(test)))

返回23.

注意:int() 函数可以接受浮点数或由纯数字组成的字符串,但它无法直接接受包含小数点或科学计数法指数的字符串。

3. base参数错误

Python 会根据 object 参数的值自动计算 base 参数的合法范围。如果指定的 base 超出此范围,程序将报错:

test = '110' 
print(int(test, -2))

输出结果为:

Traceback (most recent call last): File "/Users/Test2.py", line 3, in <module> print(int(test, -2)) ValueError: int() base must be >= 2 and <= 36, or 0

根据 object 参数值,Python 自动计算出 base 的合适区间。

4. 当object参数中存在非法字符时,Python报错

例如,在八进制数字字符中引入字符‘A’,或者十六进制字符中引入字符‘H’

test = '110S' 
print(int(test, 16))

输出结果为:

Traceback (most recent call last): File "/Users/Test2.py", line 3, in <module> print(int(test, 16)) ValueError: invalid literal for int() with base 16: '110S'

5. 二进制符号0b、八进制符号0o、十六进制符号0x加入数字字符串中对结果没有影响,且可以省略

test_0b = ['0b1011', '1011']
test_0o = ['0o735', '735']
test_0x = ['0xFA', 'FA']
 
for number in test_0b:
    print(int(number, 2))
 
for number in test_0o:
    print(int(number, 8))
 
for number in test_0x:
    print(int(number, 16))

输出结果为:

11 11 477 477 250 250

6. 将一个十进制数转化为十进制数,没有任何报错也不会有任何意义

>>> int(5)
5

也可以将一个十进制整数字符串转化为十进制(类型转化)

>>> int('23')
23

7. 自定义进制转化为十进制

int 函数具备强大的自定义进制转十进制功能。例如,将 17 进制数字字符转化为十进制数字:

test_17 = 'GG'
print(int(test_17, 17))

输出结果为:

288

8. 合法的数字字符字母不区分大小写

例如在十六进制中,A 和 a 都可以转化成十进制数,且转化结果相同。

>>> int('a', 16)
10
>>> int('A', 16)
10

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。