import java.util.ArrayList; import java.util.List; import org.apache.commons.codec.binary.Base64; public class MyBase64 { public static void main(String[] args) { // TODO Auto-generated method stub // char c = '0'; // int i = (int)c; // System.out.println(i); // System.out.println(Integer.toBinaryString(i)); String s = "stringad"; System.out.println(encode(s)); System.out.println(encode(s.getBytes())); System.out.println(encode2(s.getBytes())); System.out.println(encode3(s.getBytes())); //System.out.println(convertBinaryString2Int("10")); } public static String encode(String str){ char[] base = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray(); char[] cs = str.toCharArray(); StringBuilder sb = new StringBuilder(); for(char c: cs){ String bin = Integer.toBinaryString((int)c); System.out.println("bin: "+bin); while(bin.length()<8){ bin = "0"+bin; } sb.append(bin); } System.out.println("sb: "+sb); List<String> list = new ArrayList<String>(); String temp = sb.toString(); while(temp.length()>6){ String s = temp.substring(0,6); temp = temp.substring(6,temp.length()); list.add(s); } while(temp.length()<6){ temp+="0"; } list.add(temp); String result = ""; for(String s:list){ //System.out.println(s); int num = convertBinaryString2Int(s); System.out.print(num+" "); result += base[num]+""; } System.out.println(); if(result.length()%3==1){ result+="=="; } if(result.length()%3==2){ result+="="; } return result; } public static int convertBinaryString2Int(String str){ int sum = 0; for(int i= str.length()-1;i>=0;i--){ Integer num = Integer.parseInt(str.charAt(i)+""); sum += num * Math.pow(2, str.length()-1-i); } return sum; } /** * 编码 * @param bstr * @return String */ public static String encode(byte[] bstr){ return new sun.misc.BASE64Encoder().encode(bstr); } /** * 二进制数据编码为BASE64字符串 * * @param bytes * @return * @throws Exception */ public static String encode2(final byte[] bytes) { return new String(Base64.encodeBase64(bytes)); } public static String encode3(final byte[] bytes) { return new String(java.util.Base64.getEncoder().encode(bytes)); } }