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值.
由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);*/
}
}