URL短编码,10位与64位的转化


package com.yuxd._10to64;

public class Encode10 {
//十进制转化为64进制
public static String encode(long origin){
int position=0;
String ret="";
String binary=Long.toBinaryString(origin);
System.out.println(Long.parseLong(binary, 2));
position=binary.length()-1;
while(position>=0){
String subString=binary.substring((position-5>0?position-5:0), position+1);
long tempValue=Long.parseLong(subString, 2);
ret=Character.toString(code[(int)tempValue])+ret;
position=position-6;
}
return ret;
}
//64进制转化为10进制
public static long decode(String origin){
int stringPosition=0;
Long ret=0L;
while(stringPosition<origin.length()){
for(int i=0;i<code.length;i++){
if(origin.charAt(stringPosition)==code[i]){
ret=ret+pow(64,origin.length()-stringPosition-1)*i;
}
}
stringPosition+=1;
}
return ret;
}

//重写math中的pow方法,因为math库中是用double,容易造成问题,所以重写
public static long pow(int x,int y){
long result=1;
while(y>0){
result*=x;
y--;
}
return result;
}
private static final char[] code={'a','b','c','d','e','f','g','h','i',
'j','k','l','m','n','o','p','q','r',
's','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H',
'I','J','K','L','M','N','O',
'P','Q','R','S','T','U','V',
'W','X','Y','Z','+','-',
'1','2','3','4','5','6','7','8','9','0'
};
/*
* 测试代码
* */
public static void main(String[] args){
System.out.println(encode(9223372031234123L));
System.out.println(decode(encode(92233720361234123L)));
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值