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

📄 base64.java

📁 一个日本流行的,功能较全的开源Web办公管理(Groupware)系统。
💻 JAVA
字号:
package jp.co.sjts.gsession.tools;


/**
 * <p>Base64 僄儞僐乕僪丒僨僐乕僪  Base64.java
 *
 * @author   Satoru K   &lt;koni@sjts.co.jp&gt;
 */
public class Base64 {

    /**
     * <p>僄儞僐乕僪僥乕僽儖
     */
	static final char[] table = {
		'A','B','C','D','E','F','G','H','I','J','K','L','M',
		'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
		'a','b','c','d','e','f','g','h','i','j','k','l','m',
		'n','o','p','q','r','s','t','u','v','w','x','y','z',
		'0','1','2','3','4','5','6','7','8','9','+','/','='
	};
    
    /**
     * <p>僨僐乕僪僨乕僽儖
     */
	static final byte[] table2 = {
		 0, 0, 0, 0, 0, 0, 0, 0,
		 0, 0, 0, 0, 0, 0, 0, 0,
		 0, 0, 0, 0, 0, 0, 0, 0,
		 0, 0, 0, 0, 0, 0, 0, 0,
		 0, 0, 0, 0, 0, 0, 0, 0,
		 0, 0, 0,62, 0, 0, 0,63,
		52,53,54,55,56,57,58,59,
		60,61, 0, 0, 0, 0, 0, 0,
		 0, 0, 1, 2, 3, 4, 5, 6,
		 7, 8, 9,10,11,12,13,14,
		15,16,17,18,19,20,21,22,
		23,24,25, 0, 0, 0, 0, 0,
		 0,26,27,28,29,30,31,32,
		33,34,35,36,37,38,39,40,
		41,42,43,44,45,46,47,48,
		49,50,51, 0, 0, 0, 0, 0};

	/**
	 * Base64傊僄儞僐乕僪(晞崋壔)偡傞
	 */
	public static String encode(byte[] bytes) {
		StringBuffer sb = new StringBuffer("");

		for(int i=0;bytes.length-2>i;i+=3) {
			_encode(sb,bytes[i],bytes[i+1],bytes[i+2]);
		}

		if((bytes.length%3)==2) {
			int i = ((bytes[bytes.length-3] & 0xFF) << 8) | ((bytes[bytes.length-2] & 0xFF) << 0);
			sb.append(table[(i>>10)&0x3F]);
			sb.append(table[(i>>4)&0x3F]);
			sb.append(table[(i<<2)&0x3F]);
			sb.append(table[64]);
		} else if((bytes.length%3)==1) {
			int i = bytes[bytes.length-2] & 0xFF;
			sb.append(table[(i>>2)&0x3F]);
			sb.append(table[(i<<4)&0x3F]);
			sb.append(table[64]);
			sb.append(table[64]);
		}
		return sb.toString();
	}


	/**
	 *	Base64傊僨僐乕僪(暋崌壔)偡傞
	 */
	public static byte[] decode(String str) {
        byte[] b = (new String(str)).getBytes();
		long n;

		int i=0,j=0;
		int len = (b.length*4)/3;
		if(((char)b[b.length -1]) == '=') {
			if(((char)b[b.length -2]) == '=') {
				--len;
			}
			--len;
		}

		byte[] buf = new byte[len];
		while(i < b.length) {
			n = (table2[(int)b[i++]] << 18) |
				(table2[(int)b[i++]] << 12) |
				(table2[(int)b[i++]] <<  6) |
				table2[(int)b[i++]];
			buf[j++] = (byte)((n >>> 16) & 0xFF);
			if(--len > 0) {
				buf[j++] = (byte)((n >>> 8) & 0xFF);
				if(--len > 0) {
					buf[j++] = (byte)(n & 0xFF);
					len--;
				}
			}
		}                
		return buf;
	}

    /**
     * <p>僄儞僐乕僪
     */
	private static void _encode(StringBuffer sb,byte b1,byte b2,byte b3) {

		int i = ((b1 & 0xFF) << 16) & 0xFF0000;
		i |= ((b2 & 0xFF) << 8) & 0xFF00;
		i |= ((b3 & 0xFF) <<0) & 0x00FF;

		sb.append(table[(i>>18) & 0x3F]);
		sb.append(table[(i>>12) & 0x3F]);
		sb.append(table[(i>>6) & 0x3F]);
		sb.append(table[(i>>0) & 0x3F]);
	}
}

⌨️ 快捷键说明

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