日期:2014-05-20  浏览次数:20847 次

求助,用JAVA写base64的decode和encode方法,不用SUN的包

现在想写一个base64的decode和encode方法,
我在J2EE下面看到了一个org\apache\catalina\util\Base64   的类
我想直接用这个类是不是就可以做base64的转换,

代码中加入

import   org.apache.catalina.util.*;

public   class   Base64Code   {  

   
        private   Base64Code()   {

        }  
   
        public   static   String   encode(   String   s   )   {  
             
          String   str   =   "test ";
          str   =   Base64.encode(   s.getBytes()   ).toString();
          return   str;
        }
}  

编译没有问题,为什么执行的时候总是报java.lang.NoClassDefFoundError的错呢。

求助,如果不用   org\apache\catalina\util\Base64,可否用其他实现BASE64转换的方法。

谢谢。




------解决方案--------------------
import java.lang.*;
import java.io.*;

public class Base64 {
private static char[] base64EncodeChars = new char[] {
'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 ', '0 ', '1 ', '2 ', '3 ',
'4 ', '5 ', '6 ', '7 ', '8 ', '9 ', '+ ', '/ ' };

private static byte[] base64DecodeChars = new byte[] {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 };

public static String encode(byte[] data) {
StringBuffer sb = new StringBuffer();
int len = data.length;
int i = 0;
int b1, b2, b3;
while (i < len) {
b1 = data[i++] & 0xff;
if (i == len)
{
sb.append(base64EncodeChars[b1 > > > 2]);
sb.append(base64EncodeChars[(b1 & 0x3) < < 4]);
sb.append( "== ");
break;
}
b2 = data[i++] & 0xff;
if (i == len)
{
sb.append(base64EncodeChars[b1 > > > 2]);