需求
将一个数字 从任意进制 转换为 任意进制 的数值。
实现
Python2
def baseconvert(number, fromdigits, todigits):
if str(number)[0] == '-':
number = str(number)[1:]
neg = 1
else:
neg = 0
# make an integer out of the number
x = long(0)
for digit in str(number):
x = x*len(fromdigits) + fromdigits.index(digit)
# create the result in base 'len(todigits)'
res = ""
while x > 0:
digit = x % len(todigits)
res = todigits[digit] + res
x /= len(todigits)
if neg:
res = "-"+res
return res
//将8从10进制转为二进制
print(baseconvert(8, "0123456789","01"))
//将100从10进制转为八进制
print(baseconvert(100, "0123456789","01234567"))
Python3
需要修改x = long(0)
为x=0
原因:Python3.x中没有long类型,只有int类型。
同时修改x /= len(todigits)
为x //= len(todigits)
原因:python3使用//
作为整除符号