📄 base64_1.c
字号:
#include <stdio.h>
#define UNIT 4000
#define SOUR (UNIT*3)
#define MID (UNIT*4)
#define DEST (UNIT*4)
#define iioooooo 0xC0
#define iiiioooo 0xF0
#define iiiiiioo 0xFC
#define ooiiiiii 0x3F
#define ooooiiii 0x0F
#define ooooooii 0x03
#define oooooioo 0x04
#define oooioooo 0x10
#define oioooooo 0x40
char base64(int c);
main()
{
FILE *in,*out;
char sour[SOUR],dest[DEST];
int mid[MID];
int i,k;
in=fopen("In.txt","r");
out=fopen("Out.txt","w");
for(i=0;i<SOUR;i++)
sour[i]='\0';
for(i=0;i<DEST;i++)
dest[i]='\0';
for(i=0;i<MID;i++)
mid[MID]=64;
for(i=0;!feof(in);i++)
sour[i]=fgetc(in);
k=i;
for(i=0;i<k/3;i++)
{
mid[4*i]=((sour[3*i] & iiiiiioo)/oooooioo);
mid[4*i+1]=((sour[3*i] & ooooooii)*oooioooo+(sour[3*i+1] & iiiioooo)/oooioooo);
mid[4*i+2]=((sour[3*i+1] & ooooiiii)*oooooioo+(sour[3*i+2] & iioooooo)/oioooooo);
mid[4*i+3]=((sour[3*i+2] & ooiiiiii));
}
for(i=0;i<(k/3*4);i++)
{
printf("%d ",mid[i]);
dest[i]=base64(mid[i]);
}
for(i=0;i<(k/3*4);i++)
fprintf(out,"%c",dest[i]);
fclose(in);
fclose(out);
}
char base64(int c)
{
if(0<=c && c<=25)
return((char)(c +'A'));
else if(26<=c && c<=51)
return((char)(c +'a'- 26));
else if(52<=c && c<=61)
return((char)(c +'0'- 52));
else if(c==62)
return('+');
else if(c==63)
return('/');
else
return('\0');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -