Python内置进制转换函数详解与LeetCode实战
本文详解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,然后将其转换回十进制整数。
解题思路
- 将输入整数
num转换为二进制字符串。 - 跳过前缀
'0b',遍历剩余的二进制位。 - 构建一个新的字符串,将原字符串中的
'1'替换为'0','0'替换为'1'。 - 使用
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算法与进制处理的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













