import string


'''输入任意10进制数n,以及要转换的进制x, 返回对应转换后的数result。'''
def converet(n, x):
# 1、先调整输出的进制,用符号拼接。
li1 = [i for i in range(10)] # 拼接出0到9的列表
li2 = list(string.ascii_letters) # 拼接出所有小写字母和大写字母的列表
li3 = ['~', '`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '-', '+', '=', ',', '<', '.', '>', '/', '?', ';', ':', '"', '[', '{', ']', '}', '|']
li = li1 + li2 + li3


# 2、判断是否超出范围,是则返回ERROR
if x < 2 or x > len(li) or x > n: # 进制超出范围或者进制x大于要转换的十进制数
return 'ERROR'


# # 3、进制转换(写法一:)
# result = ''
# while True:
# m = n // x # 商
# r = n % x # 余数
# # print(r)
# if n < x:
# result = str(li[n]) + result # 跳出循环前,把最后的商,拼接在最前
# break
# result = str(li[r]) + result # 把每次的余数拼接到前面
# n = m

# return result


# 3、进制转换(写法二:)
result=''
while bool(n): # 10进制 转任意进制
result += str(li[n % x])
n //= x
return result[::-1]





ten=238362 # 10进制数
ans_x = converet(ten,92) # 将10进制转化为任意进制(这里是92进制)
print(ans_x)


注意,上面例子中用大小写来拼凑字符,如果生成的数据要插入到MySQL中且作为主键的话,要将该列数据的类型设定为【varbinary】而非【varchar】,才能让mysql可以区分大小写。