Python自定义进制转换

2023-03-15 00:00:00 python 自定义 转换

Python提供了一些内置函数用于进行进制转换,例如bin()、oct()、hex()等函数可以分别将十进制数转换为二进制、八进制和十六进制形式的字符串。如果要进行其他进制之间的转换,可以通过自定义函数来实现。

下面是一个将十进制数转换为任意进制数的函数,其中num为要转换的十进制数,base为目标进制数(2~36):

def decimal_to_base(num, base):
    # 判断目标进制是否在2~36之间
    if base < 2 or base > 36:
        return "目标进制必须在2~36之间"
    # 如果要转换的数为0,则直接返回0
    if num == 0:
        return "0"
    # 定义字符集
    digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    # 如果要转换的数为负数,则将其转为正数,并标记负号
    if num < 0:
        num = -num
        sign = "-"
    else:
        sign = ""
    # 不断将要转换的数除以目标进制数,并将余数存入列表中
    result = []
    while num > 0:
        num, remainder = divmod(num, base)
        result.append(digits[remainder])
    # 将列表中的数字反转,并拼接成字符串
    result.reverse()
    return sign + "".join(result)

使用该函数可以将任意十进制数转换为其他进制数,例如:

num = 255
base = 16
print(decimal_to_base(num, base))  # 'FF'

num = 123456789
base = 36
print(decimal_to_base(num, base))  # '21I3V9'

输出结果为:

FF
21I3V9

需要注意的是,这个函数仅能将十进制数转换为其他进制数,如果需要进行其他进制数之间的转换,可以通过将其先转换为十进制数,再转换为目标进制数的方法来实现。

相关文章