python中的进制转换十分方便,使用int(object[, radix])函数
def decimalToAny(num,n):
baseStr = {10:"a",11:"b",12:"c",13:"d",14:"e",15:"f",16:"g",17:"h",18:"i",19:"j"}
new_num_str = ""
while num != 0:
remainder = num % n
if 20 > remainder > 9:
remainder_string = baseStr[remainder]
elif remainder >=20:
remainder_string = "("+str(remainder)+")"
else:
remainder_string = str(remainder)
new_num_str = remainder_string+new_num_str
num = num / n
return new_num_str
#将任意进制数转换成十进制
def anyToDecimal(num,n):
baseStr = {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,
"a":10,"b":11,"c":12,"d":13,"e":14,"f":15,"g":16,"h":17,"i":18,"j":19}
new_num = 0
nNum = len(num) - 1
for i in num:
new_num = new_num + baseStr[i]*pow(n,nNum)
nNum = nNum -1
return new_num
作用:将字符串或者数字(可以提供基数)转换为整数
全局定义
base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]二进制 to 十进制: int(str,n=10)
int(string_num, 2)十六进制 to 十进制:
int(string_num.upper(), 16)python还提供了一系列的内建函数来将十进制转换成其他进制
十进制 to 二进制: bin()
十进制 to 八进制: oct()
十进制 to 十六进制: hex()
十六进制 to 二进制: bin(int(str,16))
二进制 to 十六进制: hex(int(str,2))
下面实现一个20进制内的任意转换(PS:需要转换成更多的进制,只需添加相应的字符即可)
#将十进制数转换成任意进制20进制以内,任意进制只需添加不同的符号即可def decimalToAny(num,n):
baseStr = {10:"a",11:"b",12:"c",13:"d",14:"e",15:"f",16:"g",17:"h",18:"i",19:"j"}
new_num_str = ""
while num != 0:
remainder = num % n
if 20 > remainder > 9:
remainder_string = baseStr[remainder]
elif remainder >=20:
remainder_string = "("+str(remainder)+")"
else:
remainder_string = str(remainder)
new_num_str = remainder_string+new_num_str
num = num / n
return new_num_str
#将任意进制数转换成十进制
def anyToDecimal(num,n):
baseStr = {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,
"a":10,"b":11,"c":12,"d":13,"e":14,"f":15,"g":16,"h":17,"i":18,"j":19}
new_num = 0
nNum = len(num) - 1
for i in num:
new_num = new_num + baseStr[i]*pow(n,nNum)
nNum = nNum -1
return new_num
目前只实现了简单的功能,后续慢慢完善;欢迎大家探讨!