in shared/src/main/java/org/apache/hupa/shared/algorithms/B64.java [121:157]
public static String toBase64(byte[] data) {
if (data == null) {
return null;
}
int len = data.length;
if (len == 0) {
return "";
}
int olen = 4 * ((len + 2) / 3);
char[] chars = new char[olen];
int iidx = 0;
int oidx = 0;
int charsLeft = len;
while (charsLeft > 0) {
int b0 = data[iidx++] & 0xff;
int b1 = (charsLeft > 1) ? data[iidx++] & 0xff : 0;
int b2 = (charsLeft > 2) ? data[iidx++] & 0xff : 0;
int b24 = (b0 << 16) | (b1 << 8) | b2;
int c0 = (b24 >> 18) & 0x3f;
int c1 = (b24 >> 12) & 0x3f;
int c2 = (b24 >> 6) & 0x3f;
int c3 = b24 & 0x3f;
chars[oidx++] = base64Chars[c0];
chars[oidx++] = base64Chars[c1];
chars[oidx++] = (charsLeft > 1) ? base64Chars[c2] : '=';
chars[oidx++] = (charsLeft > 2) ? base64Chars[c3] : '=';
charsLeft -= 3;
}
return new String(chars);
}