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() \
00035 do { \
00036 putchar(b64[(i_bits << 6 >> i_shift) & 0x3f]); \
00037 out_len++; \
00038 i_shift -= 6; \
00039 } while (0)
00040
00041 while ((in = getchar()) != EOF) {
00042 i_bits = (i_bits << 8) + in;
00043 i_shift += 8;
00044 while (i_shift > 6)
00045 putb64();
00046 }
00047 while (i_shift > 0)
00048 putb64();
00049 while (out_len++ & 3)
00050 putchar('=');
00051 putchar('\n');
00052
00053 return 0;
00054 }