public static String encode(byte b[])
    {
        int code = 0;
        StringBuffer sb = new StringBuffer((b.length - 1) / 3 << 6);
        for(int i = 0; i < b.length; i++)
        {
            code |= b[i] << 16 - (i % 3) * 8 & 255 << 16 - (i % 3) * 8;
            if(i % 3 == 2 || i == b.length - 1)
            {
                sb.append(_$6148[(code & 0xfc0000) >>> 18]);
                sb.append(_$6148[(code & 0x3f000) >>> 12]);
                sb.append(_$6148[(code & 0xfc0) >>> 6]);
                sb.append(_$6148[code & 0x3f]);
                code = 0;
            }
        }        if(b.length % 3 > 0)
            sb.setCharAt(sb.length() - 1, '=');
        if(b.length % 3 == 1)
            sb.setCharAt(sb.length() - 2, '=');
        return sb.toString();
    }