/** * Decodes the given base 64 encoded bytes. */ public static byte[] decode(byte[] b64) { return b64 == null || b64.length == 0 ? b64 : codec.decode(b64, b64.length); } }
decode4bytes(src, s, dest, d); decode1to3bytes(fq, src, s, dest, d); return dest;
/** * Returns a 64 encoded byte array of the given bytes. */ public static byte[] encode(byte[] bytes) { return bytes == null || bytes.length == 0 ? bytes : codec.encode(bytes); }
encode3bytes(src, s, dest, d); return dest; encode3bytes(src, s, dest, d); encode1byte(src, s, dest, d); break; case 2: encode2bytes(src, s, dest, d); break; default:
void decode4bytes(byte[] src, int s, byte[] dest, int d) { int p=0; // operator precedence in descending order: >>> or <<, &, | dest[d++] = (byte) ( pos(src[s++]) << 2 | (p=pos(src[s++])) >>> 4 & MASK_2BITS ) ; // 6 2 dest[d++] = (byte) ( (p & MASK_4BITS) << 4 | (p=pos(src[s++])) >>> 2 & MASK_4BITS ) ; // 4 4 dest[d] = (byte) ( (p & MASK_2BITS) << 6 | pos(src[s]) ) ; // 2 6 return; }
@Override public byte[] encode(byte[] src) { final int num3bytes = src.length / BITS_3; final int remainder = src.length % BITS_3; if (remainder == 0) { byte[] dest = new byte[num3bytes * BITS_4]; for (int s = 0, d = 0; s < src.length; s += BITS_3, d += BITS_4) encode3bytes(src, s, dest, d); return dest; } byte[] dest = new byte[(num3bytes + 1) * BITS_4]; int s = 0, d = 0; for (; s < src.length - remainder; s += BITS_3, d += BITS_4) encode3bytes(src, s, dest, d); switch (remainder) { case 1: encode1byte(src, s, dest, d); break; case 2: encode2bytes(src, s, dest, d); break; default: break; } return dest; }
encode3bytes(src, s, dest, d); return dest; encode3bytes(src, s, dest, d); encode1byte(src, s, dest, d); break; case 2: encode2bytes(src, s, dest, d); break; default:
decode4bytes(src, s, dest, d); decode1to3bytes(fq, src, s, dest, d); return dest;
/** * Returns a base 64 encoded string of the given bytes. */ public static String encodeAsString(byte... bytes) { if (bytes == null) { return null; } if (isJaxbAvailable) { try { return DatatypeConverter.printBase64Binary(bytes); } catch (NullPointerException ex) { // https://netbeans.org/bugzilla/show_bug.cgi?id=224923 // https://issues.apache.org/jira/browse/CAMEL-4893 // Note the converter should eventually be initialized and printBase64Binary should start working again LOG.debug("Recovering from JAXB bug: https://netbeans.org/bugzilla/show_bug.cgi?id=224923", ex); } } return bytes.length == 0 ? "" : CodecUtils.toStringDirect(codec.encode(bytes)); }
/** * Decodes the given base 64 encoded string, * skipping carriage returns, line feeds and spaces as needed. */ public static byte[] decode(String b64) { if (b64 == null) { return null; } if (b64.length() == 0) { return new byte[0]; } byte[] buf = new byte[b64.length()]; int len = CodecUtils.sanitize(b64, buf); return codec.decode(buf, len); }
void decode4bytes(byte[] src, int s, byte[] dest, int d) { int p = 0; // operator precedence in descending order: >>> or <<, &, | dest[d++] = (byte) ( pos(src[s++]) << 2 | (p = pos(src[s++])) >>> BITS_4 & MASK_2BITS ); // 6 2 dest[d++] = (byte) ( (p & MASK_4BITS) << BITS_4 | (p = pos(src[s++])) >>> 2 & MASK_4BITS ); // 4 4 dest[d] = (byte) ( (p & MASK_2BITS) << BITS_6 | pos(src[s]) ); // 2 6 return; }
@Override public byte[] encode(byte[] src) { final int num3bytes = src.length / BITS_3; final int remainder = src.length % BITS_3; if (remainder == 0) { byte[] dest = new byte[num3bytes * BITS_4]; for (int s = 0, d = 0; s < src.length; s += BITS_3, d += BITS_4) encode3bytes(src, s, dest, d); return dest; } byte[] dest = new byte[(num3bytes + 1) * BITS_4]; int s = 0, d = 0; for (; s < src.length - remainder; s += BITS_3, d += BITS_4) encode3bytes(src, s, dest, d); switch (remainder) { case 1: encode1byte(src, s, dest, d); break; case 2: encode2bytes(src, s, dest, d); break; default: break; } return dest; }
decode4bytes(src, s, dest, d); decode1to3bytes(fq, src, s, dest, d);
/** * Returns a 64 encoded byte array of the given bytes. */ public static byte[] encode(byte[] bytes) { return bytes == null || bytes.length == 0 ? bytes : codec.encode(bytes); }
/** * Decodes the given base 64 encoded bytes. */ public static byte[] decode(byte[] b64) { return b64 == null || b64.length == 0 ? b64 : codec.decode(b64, b64.length); } }
void decode4bytes(byte[] src, int s, byte[] dest, int d) { int p=0; // operator precedence in descending order: >>> or <<, &, | dest[d++] = (byte) ( pos(src[s++]) << 2 | (p=pos(src[s++])) >>> 4 & MASK_2BITS ) ; // 6 2 dest[d++] = (byte) ( (p & MASK_4BITS) << 4 | (p=pos(src[s++])) >>> 2 & MASK_4BITS ) ; // 4 4 dest[d] = (byte) ( (p & MASK_2BITS) << 6 | pos(src[s]) ) ; // 2 6 return; }
@Override public byte[] encode(byte[] src) { final int num3bytes = src.length / BITS_3; final int remainder = src.length % BITS_3; if (remainder == 0) { byte[] dest = new byte[num3bytes * BITS_4]; for (int s = 0, d = 0; s < src.length; s += BITS_3, d += BITS_4) encode3bytes(src, s, dest, d); return dest; } byte[] dest = new byte[(num3bytes + 1) * BITS_4]; int s = 0, d = 0; for (; s < src.length - remainder; s += BITS_3, d += BITS_4) encode3bytes(src, s, dest, d); switch (remainder) { case 1: encode1byte(src, s, dest, d); break; case 2: encode2bytes(src, s, dest, d); break; default: break; } return dest; }
decode4bytes(src, s, dest, d); decode1to3bytes(fq, src, s, dest, d); return dest;
/** * @param bytes the bytes. * @return a 64 encoded byte array of the given bytes. */ public static byte[] encode(byte[] bytes) { return bytes == null || bytes.length == 0 ? bytes : CODEC.encode(bytes); }