Logo Search packages:      
Sourcecode: fex version File versions  Download package

static byte [] fix::Base64Coder::decode ( char[]  in  )  [inline, static]

Decodes a byte array from Base64 format. No blanks or line breaks are allowed within the Base64 encoded data.

Parameters:
in a character array containing the Base64 encoded data.
Returns:
An array containing the decoded data bytes.
Exceptions:
IllegalArgumentException if the input is not valid Base64 encoded data.

Definition at line 148 of file Base64Coder.java.

                                             {
            int iLen = in.length;
            if (iLen % 4 != 0)
                  throw new IllegalArgumentException(
                              "Length of Base64 encoded input string is not a multiple of 4.");
            while (iLen > 0 && in[iLen - 1] == '=')
                  iLen--;
            int oLen = (iLen * 3) / 4;
            byte[] out = new byte[oLen];
            int ip = 0;
            int op = 0;
            while (ip < iLen) {
                  int i0 = in[ip++];
                  int i1 = in[ip++];
                  int i2 = ip < iLen ? in[ip++] : 'A';
                  int i3 = ip < iLen ? in[ip++] : 'A';
                  if (i0 > 127 || i1 > 127 || i2 > 127 || i3 > 127)
                        throw new IllegalArgumentException(
                                    "Illegal character in Base64 encoded data.");
                  int b0 = map2[i0];
                  int b1 = map2[i1];
                  int b2 = map2[i2];
                  int b3 = map2[i3];
                  if (b0 < 0 || b1 < 0 || b2 < 0 || b3 < 0)
                        throw new IllegalArgumentException(
                                    "Illegal character in Base64 encoded data.");
                  int o0 = (b0 << 2) | (b1 >>> 4);
                  int o1 = ((b1 & 0xf) << 4) | (b2 >>> 2);
                  int o2 = ((b2 & 3) << 6) | b3;
                  out[op++] = (byte) o0;
                  if (op < oLen)
                        out[op++] = (byte) o1;
                  if (op < oLen)
                        out[op++] = (byte) o2;
            }
            return out;
      }


Generated by  Doxygen 1.6.0   Back to index