我有一个数据库表,每行都有其唯一的标识(RowID)。将唯一编号映射到6个字符的唯一字符串
是否有一种很好的方法将此RowID转换为长度始终为6个字符的唯一键。唯一的关键字符可以是{A-Za-z0-9}。唯一键的一个例子是:a5Fg3A。
当然我知道只有一定数量的密钥可以使用这种方法生成,但这对我的情况无关紧要。
我已经想了很多关于这个,但我不能想出一个算法,能够正确地做到这一点。
我有一个想法是: 唯一键= ROWID 如果ROWID是比100000低则在它的前面附加0,例如: 123变为00 1变成000001
然后在数字范围从100000到900000我会将第一个数字替换为一个字符串,例如0 = a,1 = b,2 = c,...,9 = j。
然后,我可以做大写字母一样,等
我的问题是,我的算法是非常有限的,生成密钥的数量少,因为它不会利用所有可能的字符。
所以基本上我应该能够生成56800235584独特的密钥,假设每个密钥的长度为6,并利用这些字符{A-Za-z0-9}。
A-Z = 26个字符 A-Z = 26个字符 0-9 = 10个字符
因此,它是62^6个独特的密钥。
任何反馈将如何这可能是正确完成(甚至是最优的):-)
谢谢理解!
难道你不是在寻找一种方法将一个数字转换为它的base-62表示吗? –
这是正确的,那就是诀窍。谢谢! – raRaRa