//Autor: Jonathan Carrasco (GLAS)
#include<stdio.h>
#include<stdlib.h>
main()
{
//int tarea;
void Codificar();
//void Decodificar();
system("clear");
printf("**************************\n");
printf("******** Code 64 *********\n");
printf("**************************\n");
//printf(" Seleccione una tarea....\n\n");
//printf(" 1)Codificar base 64.\n 2)Decodificar base 64.\n");
//scanf("%d",&tarea); getchar();
//if(tarea==1) { Codificar(); }
//if(tarea==2) { Decodificar(); }
Codificar();
getchar();
system("clear");
return 0;
}
//-------------------------------------------------------
void Codificar()
{
int i,n,c=1,r=0,p=7,s=0;
char texto[10000],bin[80],cambio[6],store[15000],envio[6],a;
void b_decimal(char valor_b[6]);
printf("Ingrese texto a Codificar: ");
gets(texto); printf("\n\n");
for(i=0;texto[i]!='\0';i++)
{
n=texto[i];
//printf(" %d ",n);
while(n>=1)
{
r=n%2;
n=n/2;
if(r==1) { bin[p]='1'; p--; }//store[s]='1'; s++; }
if(r==0) { bin[p]='0'; p--; }//store[s]='0'; s++; }
}
bin[p]='0'; p--; bin[8]='\0'; p=0;
while(bin[p]!='\0')
{
store[s]=bin[p]; s++; p++;
}
//puts(bin);
p=7;
}
store[s]='\0'; //puts(store); printf(" %d bits\n",s);
s=0;
while(store[s]!='\0')
{
for(p=0;p<=5;s++,p++) { envio[p]=store[s]; }
envio[6]='\0'; //puts(envio);
b_decimal(envio);
}
}
//-------------------------------------------------------
void b_decimal(char valor_b[6]) //funcion conversion binario-decimal
{
int c,n,v=0,r=0,m=0; //forma de conversion: 11001 -> 1*(2e4) + 1*(2e3) + 0*(2e2) + 0*(2e1) + 1*(2e0) = 16 + 8 + 0 + 0 + 1 = 25
while(valor_b[m]!='\0') { m++; }
if(m==2) { valor_b[2]='0'; valor_b[3]='0'; valor_b[4]='0'; valor_b[5]='0'; valor_b[6]='\0'; }
if(m==4) { valor_b[4]='0'; valor_b[5]='0'; valor_b[6]='\0'; }
//puts(valor_b);
for(c=5;c>=0;)
{
n=(valor_b[c]-'0');
v=v*2;
if(v==0) v=1;
n=n*v; c--;
r=r+n;
}
//printf("%d ",r);
if(r==0) { printf("A"); }
if(r==1) { printf("B"); }
if(r==2) { printf("C"); }
if(r==3) { printf("D"); }
if(r==4) { printf("E"); }
if(r==5) { printf("F"); }
if(r==6) { printf("G"); }
if(r==7) { printf("H"); }
if(r==8) { printf("I"); }
if(r==9) { printf("J"); }
if(r==10) { printf("K"); }
if(r==11) { printf("L"); }
if(r==12) { printf("M"); }
if(r==13) { printf("N"); }
if(r==14) { printf("O"); }
if(r==15) { printf("P"); }
if(r==16) { printf("Q"); }
if(r==17) { printf("R"); }
if(r==18) { printf("S"); }
if(r==19) { printf("T"); }
if(r==20) { printf("U"); }
if(r==21) { printf("V"); }
if(r==22) { printf("W"); }
if(r==23) { printf("X"); }
if(r==24) { printf("Y"); }
if(r==25) { printf("Z"); }
if(r==26) { printf("a"); }
if(r==27) { printf("b"); }
if(r==28) { printf("c"); }
if(r==29) { printf("d"); }
if(r==30) { printf("e"); }
if(r==31) { printf("f"); }
if(r==32) { printf("g"); }
if(r==33) { printf("h"); }
if(r==34) { printf("i"); }
if(r==35) { printf("j"); }
if(r==36) { printf("k"); }
if(r==37) { printf("l"); }
if(r==38) { printf("m"); }
if(r==39) { printf("n"); }
if(r==40) { printf("o"); }
if(r==41) { printf("p"); }
if(r==42) { printf("q"); }
if(r==43) { printf("r"); }
if(r==44) { printf("s"); }
if(r==45) { printf("t"); }
if(r==46) { printf("u"); }
if(r==47) { printf("v"); }
if(r==48) { printf("w"); }
if(r==49) { printf("x"); }
if(r==50) { printf("y"); }
if(r==51) { printf("z"); }
if(r==52) { printf("0"); }
if(r==53) { printf("1"); }
if(r==54) { printf("2"); }
if(r==55) { printf("3"); }
if(r==56) { printf("4"); }
if(r==57) { printf("5"); }
if(r==58) { printf("6"); }
if(r==59) { printf("7"); }
if(r==60) { printf("8"); }
if(r==61) { printf("9"); }
if(r==62) { printf("+"); }
if(r==63) { printf("/"); }
if(m==2) { printf("=="); }
if(m==4) { printf("="); }
//printf("\n");
}
//funcionamiento todo OK.