根据一般方法,N进制转10进制使用位权展开法,10进制转N进制使用求余数法。
就是不断用待转换数除以N然后求余数,最后把所有余数倒着放一起。
例子:
将24转换为2进制:
原数 进制 余数
24 % 2 -> 0
12 % 2 -> 0
6 % 2 -> 0
3 % 2 -> 1
1 % 2 -> 1
从下往上看:(11000)2,就是24的二进制
所以……上代码。
letters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' # 从0~10~Z的字母表,最高支持36进制
num = 82493216 # 要转换的数
sy = 13 # 要转换到的进制
li = [] # 用来保存求余数后的值
while num/sy>0: # 如果num/sy大于0,即还没有转换完
li.append(num%sy) # 存储一个余数
num //= sy # 除掉
li.reverse() # 倒转
for x in li:
print(letters[x], end="") # 输出对应的字母,不换行