00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <stdio.h>
00024
00025 int main(void)
00026 {
00027 static const char b64[] =
00028 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
00029 unsigned i_bits = 0;
00030 int i_shift = 0;
00031 int out_len = 0;
00032 int in;
00033
00034 #define putb64() do { \
00035 putchar(b64[(i_bits << 6 >> i_shift) & 0x3f]); \
00036 out_len++; \
00037 i_shift -= 6; \
00038 } while (0)
00039
00040 while ((in = getchar()) != EOF) {
00041 i_bits = (i_bits << 8) + in;
00042 i_shift += 8;
00043 while (i_shift > 6)
00044 putb64();
00045 }
00046 while (i_shift > 0)
00047 putb64();
00048 while (out_len++ & 3)
00049 putchar('=');
00050 putchar('\n');
00051
00052 return 0;
00053 }