📄 base64.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 + -