java base64 编码 类_java版base64编码解码类

较早的java版本没有直接提供base64编码处理的类,都是通过其他类库的附加功能实现。而对于android平台,又有自己的base64支持类, 导致代码影响跨平台。所以就自己写了个base64编码处理的类,这样就可以同一套代码运行在android平台和se平台了。

packagecom.hoverlees.utils;/***@authorhoverleeshttp://www.hoverlees.com* RFC 4648*/

public classBase64 {private static char[] base64Table="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();private static byte[] base64TableMap=createTableMap();private static byte[] createTableMap() {byte[] table=new byte[256];for(int i=0;i<256;i++) table[i]=-1;for(int i=0;i

table[base64Table[i]]=(byte)i;

}returntable;

}/*** Base64编码,将字节数组转换成base64字符串

*@paramdata 字节数据

*@returnbase64编码的字符串*/

public static String encode(byte[] data){

StringBuffer s=newStringBuffer();int state=0;int pos=0;for(int i=0;i

state=(data[i]&0xFC)>>2;

s.append(base64Table[state]);

state=(data[i]&0x3)<<4;

pos=1;break;case 1:

state|=((data[i]&0xF0)>>4);

s.append(base64Table[state]);

state=(data[i]&0xF)<<2;

pos=2;break;case 2:

state|=((data[i]&0xC0)>>6);

s.append(base64Table[state]);

state=data[i]&0x3F;

s.append(base64Table[state]);

pos=0;break;

}

}if(pos==1){

s.append(base64Table[state]);

s.append("==");

}else if(pos==2){

s.append(base64Table[state]);

s.append("=");

}returns.toString();

}/*** Base64解码,将base64字符串转换成字节数组

*@paramdata base64的字符串

*@return解码后的字节数组*/

public static byte[] decode(String data){byte[] bytes=data.getBytes();int n=0;int pos=0;bytecchar,t;for(int i=0;i

cchar=bytes[i];

t=base64TableMap[cchar];if(cchar=='=') break;switch(pos){case 0:

bytes[n]=(byte)(t<<2);

pos=1;break;case 1:

bytes[n]=(byte)(bytes[n]|((t&0x30)>>4));

n++;

bytes[n]=(byte)((t&0xf)<<4);

pos=2;break;case 2:

bytes[n]=(byte)(bytes[n]|((t&0x3c)>>2));

n++;

bytes[n]=(byte)((t&0x3)<<6);

pos=3;break;case 3:

bytes[n]=(byte)(bytes[n]|t);

n++;

pos=0;break;

}

}byte[] r=new byte[n];for(int i=0;i

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值