网上流行的短地址算法很多,但是大部分都会存在小概率的重复时间,其实使用短地址无非就是实现映射关系。

我们举个很简单的例子,我们把地址分配成一个映射关系

记录标识——源地址

这样,我们将记录标识设置为自增长主键,这样就是十进制的1-N,通过跳转方法可以轻松实现由数字地址到跳转地址的功能,

但是往往很多人看到市面上都是由数字,字母类组成表示跳转,如此以来我们可以将这个十进制主键来转换成64进制算法,岂不是很简单,也不会存在重复主键的问题了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
	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;
	}

仅供参考,谢谢。