Advertisement
Guest User

Untitled

a guest
Nov 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.18 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. // 00000000 00000000 00000001 00000001 00000000 00000000
  4.  
  5. void encode (char a[], int length, char b[])
  6. {
  7.     int k=0;
  8.    
  9.     if(length%3 !=0)
  10.             length = length + ( 3 - (length - (length/3*3)));
  11.     int padding = 3 - (length-(length/3*3)) -1;
  12.    
  13.     for(int i=0;i<length/3;i++)
  14.     {
  15.         int val=0;
  16.         val=val+(a[i*3]<<16);
  17.         val=val+(a[i*3+1]<<8);
  18.         val=val+a[i*3+2];
  19.         b[k++]=(val&((~(~0<<6))<<18))>>18;
  20.         b[k++]=(val&((~(~0<<6))<<12))>>12;
  21.         b[k++]=(val&((~(~0<<6))<<6))>>6;
  22.         b[k++]=val&(~(~0<<6));
  23.     }
  24.    
  25.     for(int i=0; i<k-padding; ++i)
  26.     {
  27.         if(b[i]<('Z'-'A'))
  28.             printf("%c", b[i]+'A');
  29.         else if(b[i]<('Z'-'A')+('z'-'a'))
  30.             printf("%c", b[i]-('Z'-'A')+'a');
  31.         else if(b[i]<('Z'-'A')+('z'-'a')+('9'-'0'))
  32.             printf("%c", b[i]-('Z'-'A')-('z'-'a')+'0');
  33.         else if(b[i]==62)
  34.             printf("+");
  35.         else printf("/");
  36.     }
  37.    
  38.     for(int i=0;i<padding;i++)
  39.         printf("=");
  40.     printf("\n");
  41. }
  42.  
  43. int main()
  44. {
  45.   char a[20]={0, 0, 1, 1};
  46.  
  47.   char b[20]={0};
  48.  
  49.   encode(a,4,b);
  50.  
  51.   return 0;
  52.  
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement