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

📄 codecs$base64.java

📁 SAP这个系统的一个转换器
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   Codecs.java

package com.sap.mw.jco.util;


// Referenced classes of package com.sap.mw.jco.util:
//            Codecs

public static class Codecs$Base64
{

    public static final char[] encode(String value)
    {
        if(value == null)
        {
            return new char[0];
        } else
        {
            byte p[] = value.getBytes();
            return encode(p, 0, p.length);
        }
    }

    public static final char[] encode(byte bytes[])
    {
        if(bytes == null)
            return new char[0];
        else
            return encode(bytes, 0, bytes.length);
    }

    public static final char[] encode(byte bytes[], int offset, int length)
    {
        int is = 0;
        if(bytes == null || length <= 0)
            return new char[0];
        char s[] = new char[4 * ((length + 2) / 3)];
        int n = (offset + length) - length % 3;
        int i;
        for(i = offset; i < n; i += 3)
        {
            int v = bytes[i] << 16 & 0xff0000 | bytes[i + 1] << 8 & 0xff00 | bytes[i + 2] & 0xff;
            s[is++] = base64_table[v >> 18 & 0x3f];
            s[is++] = base64_table[v >> 12 & 0x3f];
            s[is++] = base64_table[v >> 6 & 0x3f];
            s[is++] = base64_table[v & 0x3f];
        }

        n = length % 3;
        i = (offset + length) - n;
        if(n == 2)
        {
            int v = bytes[i] << 16 | bytes[i + 1] << 8;
            v = bytes[i] << 16 & 0xff0000 | bytes[i + 1] << 8 & 0xff00;
            s[is++] = base64_table[v >> 18 & 0x3f];
            s[is++] = base64_table[v >> 12 & 0x3f];
            s[is++] = base64_table[v >> 6 & 0x3f];
            s[is++] = '=';
        } else
        if(n == 1)
        {
            int v = bytes[i] << 16 & 0xff0000;
            s[is++] = base64_table[v >> 18 & 0x3f];
            s[is++] = base64_table[v >> 12 & 0x3f];
            s[is++] = '=';
            s[is++] = '=';
        }
        return s;
    }

    public static final byte[] decode(String value)
    {
        if(value == null)
        {
            return new byte[0];
        } else
        {
            char p[] = value.toCharArray();
            return decode(p, 0, p.length);
        }
    }

    public static final byte[] decode(char chars[])
    {
        if(chars == null)
            return new byte[0];
        else
            return decode(chars, 0, chars.length);
    }

    public static final byte[] decode(char chars[], int offset, int length)
    {
        if(chars == null)
            return new byte[0];
        int shift = 0;
        int accum = 0;
        int index = 0;
        int tmp_length = length;
        for(int i = offset; i < offset + length; i++)
        {
            int value = base64_inv_table[chars[i] & 0xff];
            if(value < 0 && chars[i] != '=')
                tmp_length--;
        }

        int len = ((tmp_length + 3) / 4) * 3;
        if(tmp_length > 0 && chars[(offset + length) - 1] == '=')
            len--;
        if(tmp_length > 1 && chars[(offset + length) - 2] == '=')
            len--;
        byte s[] = new byte[len];
        for(int i = offset; i < offset + length; i++)
        {
            int value = base64_inv_table[chars[i] & 0xff];
            if(value >= 0)
            {
                accum <<= 6;
                shift += 6;
                accum |= value;
                if(shift >= 8)
                {
                    shift -= 8;
                    s[index++] = (byte)(accum >> shift & 0xff);
                }
            }
        }

        return s;
    }

    private static final char base64_table[];
    private static final byte base64_inv_table[];

    static 
    {
        base64_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".toCharArray();
        base64_inv_table = new byte[256];
        for(int i = 0; i < 256; i++)
            base64_inv_table[i] = -1;

        for(int i = 0; i < 64; i++)
            base64_inv_table[base64_table[i]] = (byte)i;

    }

    public Codecs$Base64()
    {
    }
}

⌨️ 快捷键说明

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