base64的java实现方法计算机二级考试
文章作者 100test 发表时间 2009:06:15 09:48:54
来源 100Test.Com百考试题网
编辑特别推荐:
全国计算机等级考试(等考)指定教材
全国计算机等级考试学习视频
全国计算机等级考试网上辅导招生
全国计算机等级考试时间及科目预告
百考试题教育全国计算机等级考试在线测试平台
全国计算机等级考试资料下载
全国计算机等级考试论坛
计算机等级考试四级应用题解析汇总
2009年下半年全国计算机二级考试报名时间从6月1日起已经开始报名。详情点击:2009年下半年全国计算机等级考试各地报名点汇总。2009年下半年全国计算机二级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库。
base64的编码,解码算法如下:
view plaincopy to clipboardprint?
public class Base64
{
/**
* 将原始数据编码为base64编码
*/
static public char[] encode(byte[] data)
{
char[] out = new char[((data.length 2) / 3) * 4].
for (int i = 0, index = 0. i <. data.length. i = 3, index = 4)
{
boolean quad = false.
boolean trip = false.
int val = (0xFF &. (int) data[i]).
val <.<.= 8.
if ((i 1) <. data.length)
{
val |= (0xFF &. (int) data[i 1]).
trip = true.
}
val <.<.= 8.
if ((i 2) <. data.length)
{
val |= (0xFF &. (int) data[i 2]).
quad = true.
}
out[index 3] = alphabet[(quad ? (val &. 0x3F) : 64)].
val >.>.= 6.
out[index 2] = alphabet[(trip ? (val &. 0x3F) : 64)].
val >.>.= 6.
out[index 1] = alphabet[val &. 0x3F].
val >.>.= 6.
out[index 0] = alphabet[val &. 0x3F].
}
return out.
}
/**
* 将base64编码的数据解码成原始数据
*/
static public byte[] decode(char[] data)
{
int len = ((data.length 3) / 4) * 3.
if(data.length >. 0 &.&. data[data.length - 1] == = )
--len.
if(data.length >. 1 &.&. data[data.length - 2] == = )
--len.
byte[] out = new byte[len].
int shift = 0.
int accum = 0.
int index = 0.
for(int ix = 0. ix <. data.length. ix )
{
int value = codes[data[ix] &. 0xFF].
if(value >.= 0)
{
accum <.<.= 6.
shift = 6.
accum |= value.
if(shift >.= 8)
{
shift -= 8.
out[index ] = (byte)((accum >.>. shift) &. 0xff).
}
}
}
if(index != out.length)
throw new Error("miscalculated data length!").
return out.
}
static private char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 /=".toCharArray().
static private byte[] codes = new byte[256].
static {
for (int i = 0. i <. 256. i )
codes[i] = -1.
for (int i = A . i <.= Z . i )
codes[i] = (byte) (i - A ).
for (int i = a . i <.= z . i )
codes[i] = (byte) (26 i - a ).
for (int i = 0 . i <.= 9 . i )
codes[i] = (byte) (52 i - 0 ).
codes[ ] = 62.
codes[ / ] = 63.
}
public static void main(String[] args) throws Exception
{
//加密成base64
String strSrc = "林".
String strOut = new String(Base64.encode(strSrc.getBytes())).
System.out.println(strOut).
String strOut2 = new String(Base64.decode(strOut.toCharArray())).
System.out.println(strOut2).
}
}
2009年9月全国计算机等级考试时间及科目预告
2009年NCRE考试有新变化
2009年全国计算机等级考试-大纲
全国计算机等级考试历年真题及答案
2009年上半年全国计算机等级考试试题及答案