·您的位置: 首页 » 资源教程 » 编程开发 » JAVA、JSP » 一个进行Base64编码的类。

一个进行Base64编码的类。

类别: JAVA教程  评论数:0 总得分:0
package sony.utils;

import java.io.*;
import java.net.*;
public final class Codes {
public final static byte[] base64Encode(byte[] byteData) {
    if (byteData == null)
        return null;
    int iSrcIdx; // index into source (byteData)
    int iDestIdx; // index into destination (byteDest)
    byte byteDest[] = new byte[((byteData.length + 2) / 3) * 4];

    for (iSrcIdx = 0, iDestIdx = 0; iSrcIdx < byteData.length - 2; iSrcIdx += 3) {
        byteDest[iDestIdx++] = (byte) ((byteData[iSrcIdx] >>> 2) & 077);
        byteDest[iDestIdx++] =
            (byte) ((byteData[iSrcIdx + 1] >>> 4) & 017 | (byteData[iSrcIdx] << 4) & 077);
        byteDest[iDestIdx++] =
            (byte) ((byteData[iSrcIdx + 2] >>> 6)
                & 003
                | (byteData[iSrcIdx + 1] << 2)
                & 077);
        byteDest[iDestIdx++] = (byte) (byteData[iSrcIdx + 2] & 077);
    }

    if (iSrcIdx < byteData.length) {
        byteDest[iDestIdx++] = (byte) ((byteData[iSrcIdx] >>> 2) & 077);
        if (iSrcIdx < byteData.length - 1) {
            byteDest[iDestIdx++] =
                (byte) ((byteData[iSrcIdx + 1] >>> 4) & 017 | (byteData[iSrcIdx] << 4) & 077);
            byteDest[iDestIdx++] = (byte) ((byteData[iSrcIdx + 1] << 2) & 077);
        } else
            byteDest[iDestIdx++] = (byte) ((byteData[iSrcIdx] << 4) & 077);
    }

    for (iSrcIdx = 0; iSrcIdx < iDestIdx; iSrcIdx++) {
        if (byteDest[iSrcIdx] < 26)
            byteDest[iSrcIdx] = (byte) (byteDest[iSrcIdx] + \'A\');
        else
            if (byteDest[iSrcIdx] < 52)
                byteDest[iSrcIdx] = (byte) (byteDest[iSrcIdx] + \'a\' - 26);
            else
                if (byteDest[iSrcIdx] < 62)
                    byteDest[iSrcIdx] = (byte) (byteDest[iSrcIdx] + \'0\' - 52);
                else
                    if (byteDest[iSrcIdx] < 63)
                        byteDest[iSrcIdx] = (byte) \'+\';
                    else
                        byteDest[iSrcIdx] = (byte) \'/\';
    }

    for (; iSrcIdx < byteDest.length; iSrcIdx++)
        byteDest[iSrcIdx] = (byte) \'=\';

    return byteDest;
}
public final static String base64Encode(String strInput) {
    if (strInput == null)
        return null;
    return base64Encode(strInput,"GB2312");
}
public final static String base64Encode(String strInput,String charSet) {
    if (strInput == null)
        return null;
    String strOutput=null;
    byte byteData[] = new byte[strInput.length()];
    try {
        //strInput.getBytes(0, strInput.length(), byteData, 0);
        byteData = strInput.getBytes(charSet);
        strOutput=new String(base64Encode(byteData),charSet);
        //strOutput=new String(base64Encode(byteData),0);
    } catch (UnsupportedEncodingException e) {
        return null;
    }
    return strOutput;
}
/**
* 此处插入方法说明。
* 创建日期:(2000-11-4 18:27:35)
* @param steam java.io.InputStream
* @param charSet java.lang.String
*/
public final static String base64Encode(InputStream in, String charSet) {
    try {
        int c;
        byte[] buff = new byte[1024];
        ByteArrayOutputStream out = new ByteArrayOutputStream(2048);
        while ((c = in.read(buff, 0, 1024)) != -1) {
            out.write(buff, 0, c);
            //index+=1024;
            //out.write(c);
            //attachContent+=ss;
        }
        in.close();
        out.flush();
        byte[] tmp2 = Codes.base64Encode(out.toByteArray());
        out.close();
        return new String(tmp2,charSet);
    }
    catch (IOException e) {
        return "";
    }
}/**
* 此处插入方法说明。
* 创建日期:(2000-11-3 23:31:04)
* @return java.lang.String
* @param strIn java.lang.String
*/  
public final static String chunkSplit(String strIn) {
    return chunkSplit(strIn,76);
}/**
* 此处插入方法说明。
* 创建日期:(2000-11-3 23:31:04)
* @return java.lang.String
* @param strIn java.lang.String
*/  
public final static String chunkSplit(String strIn,int splitLen) {
    int index=0;
    String strOut="";
    while(index+splitLen<strIn.length()){
        strOut+=strIn.substring(index,index+splitLen)+"/n";
        index+=splitLen;
    }
    if(index<strIn.length()){
        strOut+=strIn.substring(index);
    }
    return strOut;
}
}


-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1