private static char[] encodeBlock(byte[] bytes, int offset) {
    int j = 0;
    int s = bytes.length - offset - 1;
    int l = Math.min(s, 2);
    for (int i = 0; i <= l; i++) {
      byte b = bytes[offset + i];
      int n = b >= 0 ? ((int)(b)) : b + 256;
      j += n << 8 * (2 - i);
    }
    char[] ac = new char[4];
    for (int k = 0; k < 4; k++) {
      int l1 = j >>> 6 * (3 - k) & 0x3f;
      ac[k] = getChar(l1);
    }
    if (s < 1) ac[2] = '=';
    if (s < 2) ac[3] = '=';
    return ac;
  }
private static char[] encodeBlock(byte[] bytes, int offset)