⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base64.java

📁 一个类似于openJMS分布在ObjectWeb之下的JMS消息中间件。
💻 JAVA
字号:
/* * JORAM: Java(TM) Open Reliable Asynchronous Messaging * Copyright (C) 2003 - ScalAgent Distributed Technologies * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. *  * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 * USA. * * The present code contributor is ScalAgent Distributed Technologies. * * Initial developer(s): Nicolas Tachker (ScalAgent) * Contributor(s): */package com.scalagent.ksoap.marshal;import java.io.*;public class Base64 {  static final char[] charTab =       "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();       public static String encode(byte [] data) {    return encode (data,0,data.length,null).toString();  }  public static StringBuffer encode(byte [] data, int start, int len, StringBuffer buf) {    if (buf == null)       buf = new StringBuffer(data.length * 3 / 2);    int end = len - 3;    int i = start;    int n = 0;    while (i <= end) {      int d = ((((int) data[i]) & 0x0ff) << 16)         | ((((int) data[i+1]) & 0x0ff) << 8)        | (((int) data[i+2]) & 0x0ff);      buf.append(charTab[(d >> 18) & 63]);      buf.append(charTab[(d >> 12) & 63]);      buf.append(charTab[(d >> 6) & 63]);      buf.append(charTab[d & 63]);      i += 3;      if (n++ >= 14) {        n = 0;        buf.append("\r\n");      }    }    if (i == start + len - 2) {      int d = ((((int) data[i]) & 0x0ff) << 16)         | ((((int) data[i+1]) & 255) << 8);      buf.append(charTab[(d >> 18) & 63]);      buf.append(charTab[(d >> 12) & 63]);      buf.append(charTab[(d >> 6) & 63]);      buf.append("=");    } else if (i == start + len - 1) {      int d = (((int) data[i]) & 0x0ff) << 16;      buf.append(charTab[(d >> 18) & 63]);      buf.append(charTab[(d >> 12) & 63]);      buf.append("==");    }    return buf;  }  static int decode(char c) {    if (c >= 'A' && c <= 'Z')       return ((int) c) - 65;    else if (c >= 'a' && c <= 'z')       return ((int) c) - 97 + 26;    else if (c >= '0' && c <= '9')      return ((int) c) - 48 + 26 + 26;    else       switch (c) {      case '+': return 62;      case '/': return 63;      case '=': return 0;      default:        throw new RuntimeException("unexpected code: "+c);      }  }		  public static byte [] decode(String s) {    ByteArrayOutputStream bos = new ByteArrayOutputStream();    decode(s,bos);    return bos.toByteArray();  }  public static void decode(String s, ByteArrayOutputStream bos) {    int i = 0;    int len = s.length();        while (true) {       while (i < len && s.charAt(i) <= ' ') i++;      if (i == len) break;      int tri = (decode(s.charAt(i)) << 18)        + (decode(s.charAt(i+1)) << 12)        + (decode(s.charAt(i+2)) << 6)        + (decode(s.charAt(i+3)));      bos.write((tri >> 16) & 255);      if (s.charAt (i+2) == '=') break;      bos.write((tri >> 8) & 255);      if (s.charAt (i+3) == '=') break;      bos.write(tri & 255);      i += 4;    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -