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
需要注意的是,这个函数仅能将十进制数转换为其他进制数,如果需要进行其他进制数之间的转换,可以通过将其先转换为十进制数,再转换为目标进制数的方法来实现。
相关文章