初识base64

base64关键代码

 public   String encode(String Data){
              String base64Code = "ABCDEFGHIJKLINOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

            if(Data == null ){      //检测是否为空
                return Data;
            }
            char[] Arr = Data.toCharArray();
            String Strascii = null;
            StringBuilder ascii_all = new StringBuilder();
            for (int i = 0; i  < Arr.length; i++ ){
                Strascii = Integer.toBinaryString ((int)Arr[i]);  //返回Arr数据的二进制
                if(Strascii.length() < 8 ){   //不足八位在高位补0
                    Strascii = "0" + Strascii;
                }
                ascii_all.append(Strascii);
            }
            while (ascii_all.length() % 6 != 0){  //不是6的倍数就要在低位补0
                ascii_all.append("0");
             }
             String Str_ascii_all = ascii_all.toString();
             List<String> List6 = new ArrayList<String>();
             String temp = null;
             while(Str_ascii_all.length()/6 > 0){  //6个一组分成数组
                 temp = Str_ascii_all.substring(0,6);
                 Str_ascii_all = Str_ascii_all.substring(6);
                 List6.add(temp);
             }
             String[] Str6 = List6.toArray(new String[List6.size()]);
             int[] index = new int[Str6.length];
             int overLen = 0;
             if(Data.length()% 3 != 0) {
                 overLen = 3- Data.length()% 3;   //不足3位就在后面加“=”
             }
             //设定存放最终编码的容器
             char[] code = new char[index.length+ overLen];
             for(int i= 0; i< index.length; i++) {
                 //将二进位转换成十进制数字
                 index[i] = Integer.parseInt(Str6[i], 2);  //返回Str6[i]的二进制数

                 code[i] = base64Code.charAt(index[i]);  //按数值索引到对应的字符
             }
             switch(overLen) {
                 case 2:code[code.length- 2] = '=';
                 case 1:code[code.length- 1] = '=';
                 default:
             }
             return String.valueOf(code);
         }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。