93 unsigned char a, b, c;
102 i = in->len / 3 * 4 + 4;
106 for (i = 0; i < in->len; i += 3) {
108 b = i + 1 < in->len ? in->s[i + 1] : 0;
109 c = i + 2 < in->len ? in->s[i + 2] : 0;
111 *s++ = b64alpha[a >> 2];
112 *s++ = b64alpha[((a & 3 ) << 4) | (b >> 4)];
114 if (i + 1 >= in->len) *s++ =
B64PAD;
115 else *s++ = b64alpha[((b & 15) << 2) | (c >> 6)];
117 if (i + 2 >= in->len) *s++ =
B64PAD;
118 else *s++ = b64alpha[c & 63];
120 out->len = s - out->s;