base64的实现过程

base64的实现过程:
由a-z,A-Z,0-9,/,+开头组成,三位一组,不足补“=”。
例如"men":
先转成US-ASCII值.
"m"十进制 109
"e"十进制 101
"n"十进制 110
二进制 :
m 01101101
e 01100101
n 01101110
三个8位连起来是24位
011011010110010101101110
然后分成4个6位
011011 010110 010101 101110
现在得到4个值,十进制为
27 22 21 46
对应的 Base64 字符是 :
b W V u
编码总是基于3个字符,从而产生4个Base64字符。
假如只剩1或2个字符,使用非凡字符"="补齐Base64的4字。
如,编码"me"
01101101 01100101
0110110101100101
011011 010110 0101
111111 (与,补足6位)
011011 010110 010100
b W U
b W U = ("=" 补足4字符)
于是 "bWU=" 就是"me"的Base64值.

package com.ibm.bgs.test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class Base64 {


/**
* base64 to img
* @param strBase64
* @param strPath
* @return
*/
public static boolean getImgFromBase64(String strBase64,String strPath){
if(strBase64 == null)return false;
BASE64Decoder based = new BASE64Decoder();
try {
byte[] b = based.decodeBuffer(strBase64);
for (int i = 0; i < b.length; i++) {
if(b[i] < 0){
b[i]+=256;
}
}
OutputStream out = new FileOutputStream(strPath);
out.write(b);
out.flush();
out.close();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}


/**
* img to base64
* @param strPath
* @return
*/
public static String getBase64Img(String strPath){
byte[] b =null;
FileInputStream in =null;
if(strPath == null) return null;
try {
in = new FileInputStream(strPath);
b = new byte[in.available()];
in.read(b);
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
BASE64Encoder basee = new BASE64Encoder();
return basee.encode(b);
}


/**
*
* String to BASE64
* @param str
* @return
*/
public static String getBASE64(String str){
String strBASE64Code = "" ;
if(str == null) return null;
BASE64Encoder base64 = new BASE64Encoder();
strBASE64Code = base64.encode(str.getBytes());
return strBASE64Code;
}

/**
* BASE64 to String
* @param strBASE64
* @return
*/
public static String getFromBASE64(String strBASE64){
String strString = "" ;
if(strBASE64 == null)return null;
BASE64Decoder based = new BASE64Decoder();
try {
byte[] b = based.decodeBuffer(strBASE64);
strString = new String(b);
return strString;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}

/**
* BASE64 to byte
* @param strBASE64
* @return
*/
public static String getByteFromBASE64(String strBASE64){
String strString = "" ;
if(strBASE64 == null)return null;
BASE64Decoder based = new BASE64Decoder();
try {
byte[] b = based.decodeBuffer(strBASE64);
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]+":"+Integer.toBinaryString(b[i]));



}

return strString;
} catch (IOException e) {
e.printStackTrace();
return null;
}

}


public static void main(String[] args) {
/* String strTest = "罗金川";
String strBase = getBASE64(strTest);
System.out.println(">>>>:"+strBase);*/



/* String strBase = "wt698LSox+HH4cfJx8nH4cfhx8nHycfhx+HHycfJx+HH4cfJx8k=";
String strStr = getFromBASE64(strBase);
System.out.println(">>>>:"+strStr);*/

String strBase = "wt698LSo";
String strStr = getByteFromBASE64(strBase);
//System.out.println(">>>>:"+strStr);



/* String strPath = "d:\\test.bmp";
String strStr = getBase64Img(strPath);
System.out.println(strStr); */

/* String strBase64="Qk3uCwAAAAAAADYAAAAoAAAAYwAAAA8AAAABABAAAAAAALgLAAAAAAAAAAAAAAAAAAAAAAAA/3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9/AAD/f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//38AAP9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//fwAA/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//fwAA/3//f/9//3//f/9//3//f/9/AAAK" +
"PAo8CjwKPAo8/3//f/9//38KPAo8CjwKPP9//3//f/9//38KPAo8Cjz/f/9//3//fwo8CjwKPAo8" +
"CjwKPP9/CjwKPAo8CjwKPP9//38KPAo8Cjz/f/9/CjwKPAo8/3//f/9//3//f/9//3//f/9//3//" +
"fwo8CjwKPP9//3//fwo8CjwKPAo8Cjz/f/9//3//fwo8CjwKPAo8CjwKPP9//38KPAo8CjwKPP9/" +
"/3//f/9/AAAAAP9//3//f/9//3//f/9//38AAP9/CjwKPP9//3//f/9//38KPAo8/3//f/9/Cjz/" +
"f/9//38KPAo8/3//fwo8/3//fwo8Cjz/f/9/CjwKPP9//3//fwo8Cjz/f/9//3//f/9/CjwKPP9/" +
"/38KPAo8/3//f/9//3//f/9//3//f/9//3//fwo8Cjz/f/9/Cjz/f/9//38KPAo8/3//f/9//3//" +
"fwo8Cjz/f/9/CjwKPP9//38KPAo8/3//f/9/Cjz/f/9//3//fwAAAAD/f/9//3//f/9//3//fwAA" +
"/38KPAo8/3//f/9//3//fwo8Cjz/f/9//3//f/9//3//fwo8Cjz/f/9//3//f/9/CjwKPP9//38K" +
"PAo8/3//f/9/CjwKPP9//3//f/9//38KPAo8/3//fwo8Cjz/f/9//3//f/9//3//f/9//3//f/9/" +
"CjwKPP9//3//f/9//3//fwo8Cjz/f/9//3//f/9/CjwKPP9//38KPAo8/3//fwo8Cjz/f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9/AAD/fwo8Cjz/f/9//3//f/9/CjwKPAo8CjwKPAo8" +
"/3//f/9/CjwKPP9//3//f/9//38KPAo8/3//fwo8Cjz/f/9//38KPAo8/3//f/9//3//fwo8Cjz/" +
"f/9/CjwKPP9//3//f/9//3//f/9//3//f/9//38KPAo8/3//f/9//3//f/9/CjwKPP9//3//f/9/" +
"/38KPAo8/3//fwo8Cjz/f/9/CjwKPAo8CjwKPAo8/3//f/9//3//f/9//3//f/9//3//f/9//38A" +
"AP9/CjwKPAo8/38KPP9//38KPAo8/3//fwo8Cjz/f/9//38KPAo8/3//f/9//3//fwo8Cjz/f/9/" +
"CjwKPP9//3//fwo8CjwKPP9/Cjz/f/9/CjwKPP9//38KPAo8/3//f/9//3//f/9//3//f/9//3//" +
"fwo8Cjz/f/9//3//f/9//38KPAo8Cjz/fwo8/3//fwo8Cjz/f/9/CjwKPP9//38KPAo8/3//fwo8" +
"Cjz/f/9//3//fwAAAAD/f/9//3//f/9//3//fwAACjwKPAo8/38KPAo8/3//f/9/CjwKPAo8Cjz/" +
"f/9//38KPAo8CjwKPAo8/3//fwo8CjwKPP9/CjwKPAo8/3//fwo8CjwKPP9/CjwKPP9/CjwKPAo8" +
"CjwKPAo8/3//f/9//3//f/9//3//f/9//3//fwo8CjwKPAo8Cjz/f/9//38KPAo8Cjz/fwo8Cjz/" +
"fwo8CjwKPP9/CjwKPAo8/3//f/9/CjwKPAo8Cjz/f/9//3//f/9/AAAAAP9//3//f/9//3//f/9/" +
"AAD/f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/CjwKPP9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/38KPAo8/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//38AAP9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//38KPAo8/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//fwo8Cjz/f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"fwAA/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/AAD/f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/38AAP9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/" +
"/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//" +
"f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//fwAA";
String strPath = "d:\\test1.bmp";
getImgFromBase64(strBase64,strPath);*/

}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值