📄 base64_2.c
字号:
#include <stdio.h>
#define UNIT 4000
#define SOUR (UNIT*4)
#define MID (UNIT*4)
#define DEST (UNIT*3)
#define iiiiii 0x3F
#define iioooo 0x30
#define ooiioo 0x0C
#define ooooii 0x03
#define ooiiii 0x0F
#define iiiioo 0x3C
#define oooioo 0x04
#define oioooo 0x10
#define ioooooo 0x40
int base64(char 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[i]='64';
for(i=0;!feof(in);i++)
sour[i]=fgetc(in);
k=i;
for(i=0;i<k;i++)
mid[i]=base64(sour[i]);
i=0;
while(i<k)
{
printf("%d ",mid[i]);
i++;
}
for(i=0;i<k/4;i++)
{
dest[3*i]= (char)((mid[4*i] & iiiiii)*oooioo+(mid[4*i+1] & iioooo)/oioooo);
dest[3*i+1]= (char)((mid[4*i+1] & ooiiii)*oioooo+(mid[4*i+2] & iiiioo)/oooioo);
dest[3*i+2]= (char)((mid[4*i+2] & ooooii)*ioooooo+(mid[4*i+3] & iiiiii));
}
for(i=0;i<(k/4*3);i++)
fprintf(out,"%c",dest[i]);
fclose(in);
fclose(out);
}
int base64(char c)
{
if('A'<=c && c<='Z')
return((int)(c -'A'));
else if('a'<=c && c<='z')
return((int)(c -'a'+ 26));
else if('0'<=c && c<='9')
return((int)(c -'0'+ 52));
else if(c=='+')
return(62);
else if(c=='/')
return(63);
else if(c=='\0')
return(64);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -