Base 64 encode 2 : Base64 « Date Type « Android






Base 64 encode 2

   
//package com.softright;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

public class Base64 {

  private static final String BASE_64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  private static final char CHAR_PAD='=';
  public static String encode(byte[] src) {
    if(src==null)
      return null;
    StringBuffer strRet = new StringBuffer();
    int i = 0;
    int j = 0;
    byte[] char_array_3 = new byte[3];
    byte[] char_array_4 = new byte[4];
    
    for (int k=0;k<src.length;k++) {
      char_array_3[i++] = src[k];
      if (i == 3) {
        char_array_4[0] = new Integer((char_array_3[0] & 0xfc) >> 2)
            .byteValue();
        char_array_4[1] = new Integer(((char_array_3[0] & 0x03) << 4)
            + ((char_array_3[1] & 0xf0) >> 4)).byteValue();
        char_array_4[2] = new Integer(((char_array_3[1] & 0x0f) << 2)
            + ((char_array_3[2] & 0xc0) >> 6)).byteValue();
        char_array_4[3] = new Integer(char_array_3[2] & 0x3f)
            .byteValue();
        for (i = 0; (i < 4); i++)
          strRet.append(BASE_64_CHARS.charAt(char_array_4[i]));
        i = 0;
      }
    }
    if (i > 0) {
      for (j = i; j < 3; j++)
        char_array_3[j] = '\0';
      char_array_4[0] = new Integer((char_array_3[0] & 0xfc) >> 2)
          .byteValue();
      char_array_4[1] = new Integer(((char_array_3[0] & 0x03) << 4)
          + ((char_array_3[1] & 0xf0) >> 4)).byteValue();
      char_array_4[2] = new Integer(((char_array_3[1] & 0x0f) << 2)
          + ((char_array_3[2] & 0xc0) >> 6)).byteValue();
      char_array_4[3] = new Integer(char_array_3[2] & 0x3f).byteValue();
      for (j = 0; (j < i + 1); j++) {
        strRet.append(BASE_64_CHARS.charAt(char_array_4[j]));
      }
      while ((i++ < 3)) {
        strRet.append(CHAR_PAD);
      }
    }
    try {
      return strRet.toString();
    } catch (Exception e) {
      return null;
    }

  }

  @SuppressWarnings("unchecked")
  public static byte[] decode(String src) {
    String strEncoded = null;
    try {
      strEncoded = src;//java.net.URLDecoder.decode(src, "iso-8859-1");
      if(strEncoded==null) return null;
    } catch (Exception e) {
      return null;
    }
    int in_len = strEncoded.length();
    int i = 0;
    int j = 0;
    int in_ = 0;
    List ret = new ArrayList();
    byte[] char_array_3 = new byte[3];
    byte[] char_array_4 = new byte[4];
    while ((in_len-- > 0) && (strEncoded.charAt(in_) != CHAR_PAD)) {
      char_array_4[i++] = (byte) strEncoded.charAt(in_);
      in_++;
      if (i == 4) {
        for (i = 0; i < 4; i++)
          char_array_4[i] = new Integer(BASE_64_CHARS
              .indexOf(char_array_4[i])).byteValue();
        char_array_3[0] = new Integer((char_array_4[0] << 2)
            + ((char_array_4[1] & 0x30) >> 4)).byteValue();
        char_array_3[1] = new Integer(((char_array_4[1] & 0xf) << 4)
            + ((char_array_4[2] & 0x3c) >> 2)).byteValue();
        char_array_3[2] = new Integer(((char_array_4[2] & 0x3) << 6)
            + char_array_4[3]).byteValue();
        for (i = 0; (i < 3); i++)
          ret.add(new Byte(char_array_3[i]));
        i = 0;
      }
    }
    if (i > 0) {
      for (j = i; j < 4; j++)
        char_array_4[j] = 0;
      for (j = 0; j < 4; j++)
        char_array_4[j] = new Integer(BASE_64_CHARS
            .indexOf(char_array_4[j])).byteValue();
      char_array_3[0] = new Integer((char_array_4[0] << 2)
          + ((char_array_4[1] & 0x30) >> 4)).byteValue();
      char_array_3[1] = new Integer(((char_array_4[1] & 0xf) << 4)
          + ((char_array_4[2] & 0x3c) >> 2)).byteValue();
      char_array_3[2] = new Integer(((char_array_4[2] & 0x3) << 6)
          + char_array_4[3]).byteValue();
      for (j = 0; (j < i - 1); j++)
        ret.add(new Byte(char_array_3[j]));
    }
    byte[] rlt = new byte[ret.size()];
    //int k = 0;
    for (int k=0;k<ret.size();k++) {
      rlt[k] = ((Byte)ret.get(k)).byteValue();
    }
    return rlt;

  }
  public static void main(String[] args)
  throws Exception
  {
    
    File file=new File("c:\\test.dat");
    file.createNewFile();
    FileOutputStream out=new FileOutputStream(file);
    out.write((decode("EgAHAAAAAAAAAAAAAACqDwAABgIEAFAATgBHADMAywWJUE5HDQoaCgAAAA1JSERSAAAAMAAAADAIAgAAANhgbtAAAAAEZ0FNQQAAsY8L/GEFAAAFgklEQVRYR+2W308cVRTH75OvRpuCBjT2gcS/wUjigz8fmjZ9sTUajTQmajU+tNkaG3XTRItFH5RK1AoGjSKGWuKPLtFCslW0GCiV0vKbhZn9we6yu/zoVigwfs+cmbPDIC0zgPrAzQlh79x77uee8z1nRqmtsRWBrQj8/yLwTWNjzh7xWGxkZLirs7O9/de2ttaW0Jnm5tNYAAscOvgvseOwgbK7xOa7FWz2tJqsvsM5v/FAzoOvtRXOQyScBxtXCYiZnPOf1dU5oV3EfoJ3/vzv4hGngol/9l665AISptWAeIGT2A8QdOIEglP+6ZzHT8yvBYjXiEM/QM6U8ansbo2iXrl9A4Cyn9yWPFYCy9WThsaeKoHhpMxH21JVpYnX74RNN6hs7S14Sgv23T266x7Y8EM7IGrXdvaAp333lvmJ0Jkff5j5VrFTpB9M0ReK4RHzU18qYQKQMGn7C0wAcm2XK4HJD9C5cHiuXbFTKBpM8UARmDAPIGGa/Y6AmCl6oFiYjldWurbLlXArP0AXu7vhkZ0CCIZQgQnzV78nIGYiVpsJQMKEsndtlyv5BEI1LUYICAY9MhBsLBLBjDDN/0GPmCl+sEiYAOTaLldCmP1ECECoLHa6pBET6wnzC1dokpkW+pUwQePCBCDXdgbS2z5EmP0DsVP8BRPriYGECUDCxHXHTAzk3J4Yro92nATQzsce9QPEe9CvGQgmQMYEATHTUpyAmEl6AZhw6rbtRbw9Fg0lYk0T4wTU8FWDfxreybljQzHjGLQiYaLg2UzSC5iGTdN1Cyhef/Zs6/sfVK8XCEcyE0Qgx7S0hJiJQZmJ667imad52ZW+/s6uC1E9rOlRRCjeV3/y01oAHXvn+BtvBg8FDr/40svPVux/fN8TO3ftfvDhR+67v3xVVgnJzCk6b+oLNdNEQM55pAMmM2ACEIcQk5Gx8fGxPi3SqQ2E9cuhaC8BpRI16Ymq9EBwsj+Q/O2AB6DC2albEQnYUkwtDKj5TjXXQVi5Oitag4ODwoRmCBqgsBHQeFdUC8e0UFxrSozWTwzWJPsJKBEOeIsQd0Iju8fIlCMv+Z9U7nOVerc0frgYdr2nkD5JKMpKcop/CGh8SNN69Eg4OhDSe5q0jkattVZrOZEeDKYuegSiTE1XEFB2jxPIquQh9dcvCms4ocxk3YG/Ri7Qo7HRPk3r/Qeg/mA25QXISsHsK8IkEZr+2iJYNJkyH98O6SyOki1cJgh0S94OpskTxbhPVOuK6ecSenMhQiPBbCwwlV6bhkQQRv6IYTMJEMLATHh1G0lFNl9NNvM8DF0RIsv/TAuwjIDMMDtTltarWI4MDbvJgFqt4APIZHKmjB8RTabcSJUREEteU9f/VMm3ShAnFr6Fbl6J7yMR4hLBApy1pmEBzVUSUP7ISiAju5uAEJjMA4aUoUZAnDswgY/KYvl2FAREDSA+wsNAJMmdzSQpg0qgGyP3JDHl9pI5mNLvlYqewEQvsiFqnq4ixR1unikXrCRYmKQ=")));
    out.close();
  }
}

   
    
    
  








Related examples in the same category

1.Base64 encoding
2.Class Base64 can be used for base64-encoding a byte array and/or for base64-decoding a base64-string.
3.A Base64 Encoder/Decoder.
4.Utilities for encoding and decoding the Base64 representation of binary data.
5.An InputStream that does Base64 decoding on the data read through it.
6.A very fast and memory efficient class to encode and decode to and from BASE64 in full accordance with RFC 2045.
7.Encode To Base64