java实现短地址算法

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

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

记录标识——源地址

这样,我们将记录标识设置为自增长主键,这样就是十进制的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;
	}

仅供参考,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值