Python内置进制转换函数详解与LeetCode实战

键盘旁的猫
键盘旁的猫
发布时间:2026-10-11| 2人浏览过
原创

本文详解Python中int、bin、oct、hex等内置进制转换函数的用法与参数要求,并通过LeetCode第476题“数字的补数”实战,演示如何结合字符串处理与进制转换解决二进制位运算问题。

Python内置进制转换函数

Python提供了几个内置函数用于在不同进制之间进行转换。掌握这些函数的语法和返回值类型,是处理数字相关问题的基础。

1. 十进制转其他进制

当需要将一个整数转换为二进制、八进制或十六进制字符串时,可以使用以下函数:

  • bin(x):将整数 x 转换为以 '0b' 为前缀的二进制字符串。
  • oct(x):将整数 x 转换为以 '0o' 为前缀的八进制字符串。
  • hex(x):将整数 x 转换为以 '0x' 为前缀的十六进制字符串。

注意:这些函数的返回值均为字符串类型。

2. 其他进制转十进制

要将表示其他进制的字符串转换为十进制整数,需使用 int() 函数,并指定第二个参数 base 表示源字符串的进制:

  • int(string, base):将字符串 string 按 base 进制解析为十进制整数。

例如:int('101010', 2) 将二进制字符串转换为十进制数;int('FFF', 16) 将十六进制字符串转换为十进制数。

3. 跨进制转换技巧

若需在不同非十进制之间转换(如二进制转十六进制),可先利用 int() 将源字符串转为十进制整数,再使用对应的转换函数:

  • 二进制转八进制:oct(int(x, 2))
  • 八进制转二进制:bin(int(x, 8))
  • 二进制转十六进制:hex(int(x, 2))
  • 十六进制转二进制:bin(int(x, 16))

其中,参数 x 必须为字符串格式。

LeetCode第476题实战:数字的补数

LeetCode 第476题要求计算给定正整数的二进制补数。补数的定义是:将二进制表示中所有的 1 变为 0,0 变为 1,然后将其转换回十进制整数。

解题思路

  1. 将输入整数 num 转换为二进制字符串。
  2. 跳过前缀 '0b',遍历剩余的二进制位。
  3. 构建一个新的字符串,将原字符串中的 '1' 替换为 '0','0' 替换为 '1'。
  4. 使用 int(new_string, 2) 将新二进制字符串转换回十进制整数。

代码实现

class Solution:
    def findComplement(self, num):
        """
        :type num: int
        :rtype: int
        """
        # 获取二进制字符串,例如 bin(5) 返回 '0b101'
        string = bin(num)
        string1 = ''
        # 从索引2开始遍历,跳过 '0b' 前缀
        for i in range(2, len(string)):
            if string[i] == '1':
                string1 += '0'
            else:
                string1 += '1'
        # 将处理后的二进制字符串转换为十进制整数
        return int(string1, 2)

示例解析

以输入 5 为例:

  • 5 的二进制表示为 '0b101'。
  • 去除前缀后为 '101'。
  • 按位取反得到 '010'。
  • 二进制 '010' 对应的十进制数为 2。

基础转换示例

以下代码展示了如何将用户输入的十进制数转换为其他进制,以及如何将其他进制的字符串转换为十进制:

# 十进制转其他进制
dec = input('10进制数为:')
print("转换为二进制为:", bin(int(dec)))
print("转换为八进制为:", oct(int(dec)))
print("转换为十六进制为:", hex(int(dec)))

# 其他进制转十进制
string1 = '101010'
print('二进制字符串转换成十进制数为:', int(string1, 2))

string2 = '367'
print('八进制字符串转换成十进制数为:', int(string2, 8))

string3 = 'FFF'
print('十六进制字符串转换成十进制数为:', int(string3, 16))

以上就是Python内置进制转换函数与LeetCode第476题解法的详细内容,更多关于Python算法与进制处理的资料请关注本站其它相关文章!

相关标签:

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

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 算法库。