简单 短链 shorturl python实现

实现原理

在数据库中把 短链和长链进行映射; 表字段 id(自增), longurl, shorturl;
使用 0-9a-zA-Z 组合成五位(62^5) 或者六位(62^6) 字符来表示字段id ; 短链 和 id 进行相互转化,使用进制即可达到映射及唯一的效果;

python 代码实现

from random import shuffle

secret = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# secret = 'YTiqlfv682MtKzV0RjLgpWJwmXAbcNkIoyPZda9ExO3S7FBnGU15eHshDuQCr4'

# 字符串打乱
def random_string(s):
    s = list(s)
    shuffle(s)
    print("".join(s))
    return "".join(s)


# 十进制转换到62进制
def encode62(id):
    num_list = []
    while (id > 0):
        remainder = id % 62
        num_list.insert(0, secret[remainder])
        id = id // 62
    return "".join(num_list).rjust(6, secret[0])


# 62进制转换到十进制
def decode62(secret_str):
    num_list = list(map(secret.index, secret_str))
    num_sum = 0
    for i, num in enumerate(num_list[::-1]):
        num_sum += num * 62**i
    return num_sum

print(encode62(138))
print(decode62(encode62(138)))

你可能感兴趣的:(工具,python,开发语言,后端)