网上流行的短地址算法很多,但是大部分都会存在小概率的重复时间,其实使用短地址无非就是实现映射关系。
我们举个很简单的例子,我们把地址分配成一个映射关系
记录标识——源地址
这样,我们将记录标识设置为自增长主键,这样就是十进制的1-N,通过跳转方法可以轻松实现由数字地址到跳转地址的功能,
但是往往很多人看到市面上都是由数字,字母类组成表示跳转,如此以来我们可以将这个十进制主键来转换成64进制算法,岂不是很简单,也不会存在重复主键的问题了。
public static String Dec2AnyHex(int dec, int shift) {
char[] buf = new char[32];
int charPos = 32;
int radix = 1 < < shift;
int mask = radix - 1;
do {
buf[--charPos] = Config.digits[dec & mask];
dec >>>= shift;
} while (dec != 0);
return new String(buf, charPos, (32 - charPos));
}
public static Integer AnyHex2Dec(String anyHex, int shift) {
char[] s = anyHex.toCharArray();
String digitsString = new String(Config.digits);
int Num = 0;
for (int i = s.length; i > 0; i--) {
int j = digitsString.indexOf(s[i - 1]);
Num += j * Math.pow(1 < < shift, s.length - i);
}
return Num;
}
仅供参考,谢谢。