4
* arbitrary data on stdin -> BASE64 data on stdout
6
* UNIX's newline convention is used, i.e. one ASCII control-j (10 decimal).
22
unsigned char alphabet[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
27
int cols, bits, c, char_count;
30
_setmode( _fileno(stdin), _O_BINARY);
36
while ((c = getchar()) != EOF) {
38
fprintf(stderr, "encountered char > 255 (decimal %d)", c);
43
if (char_count == 3) {
44
putchar(alphabet[bits >> 18]);
45
putchar(alphabet[(bits >> 12) & 0x3f]);
46
putchar(alphabet[(bits >> 6) & 0x3f]);
47
putchar(alphabet[bits & 0x3f]);
59
if (char_count != 0) {
60
bits <<= 16 - (8 * char_count);
61
putchar(alphabet[bits >> 18]);
62
putchar(alphabet[(bits >> 12) & 0x3f]);
63
if (char_count == 1) {
67
putchar(alphabet[(bits >> 6) & 0x3f]);