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

📄 base64.java

📁 Mofire的JAR压缩包
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   Base64.java

package org.kobjects.base64;

import java.io.ByteArrayOutputStream;

public class Base64
{

	static final char charTab[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();

	public Base64()
	{
	}

	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 = (data[i] & 0xff) << 16 | (data[i + 1] & 0xff) << 8 | data[i + 2] & 0xff;
			buf.append(charTab[d >> 18 & 0x3f]);
			buf.append(charTab[d >> 12 & 0x3f]);
			buf.append(charTab[d >> 6 & 0x3f]);
			buf.append(charTab[d & 0x3f]);
			i += 3;
			if (n++ >= 14)
			{
				n = 0;
				buf.append("\r\n");
			}
		}
		if (i == (start + len) - 2)
		{
			int d = (data[i] & 0xff) << 16 | (data[i + 1] & 0xff) << 8;
			buf.append(charTab[d >> 18 & 0x3f]);
			buf.append(charTab[d >> 12 & 0x3f]);
			buf.append(charTab[d >> 6 & 0x3f]);
			buf.append("=");
		} else
		if (i == (start + len) - 1)
		{
			int d = (data[i] & 0xff) << 16;
			buf.append(charTab[d >> 18 & 0x3f]);
			buf.append(charTab[d >> 12 & 0x3f]);
			buf.append("==");
		}
		return buf;
	}

	static int decode(char c)
	{
		if (c >= 'A' && c <= 'Z')
			return c - 65;
		if (c >= 'a' && c <= 'z')
			return (c - 97) + 26;
		if (c >= '0' && c <= '9')
			return (c - 48) + 26 + 26;
		switch (c)
		{
		case 43: // '+'
			return 62;

		case 47: // '/'
			return 63;

		case 61: // '='
			return 0;
		}
		throw new RuntimeException("unexpected code: " + c);
	}

	public static byte[] decode(String s)
	{
		int i = 0;
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		int len = s.length();
		do
		{
			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 & 0xff);
			if (s.charAt(i + 2) == '=')
				break;
			bos.write(tri >> 8 & 0xff);
			if (s.charAt(i + 3) == '=')
				break;
			bos.write(tri & 0xff);
			i += 4;
		} while (true);
		return bos.toByteArray();
	}

}

⌨️ 快捷键说明

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