Guest User

HEX_FILE_CONVERTER

a guest
Feb 2nd, 2014
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.51 KB | None | 0 0
  1. /* HEX:HEX_FILE_CONVERTER 2014-02-02 v1.0                        *
  2.  * file:main.c                                                   *
  3.  * Compile:gcc -o HEXConverter main.c                            *
  4.  * gcc(1):http://gcc.gnu.org/releases.html                       *
  5.  * gcc(2):http://www.bloodshed.net/download.html                 *
  6.  * INSPERATION:https://www.youtube.com/user/singingbanana/videos *
  7.  * (BUT NO REALLY, AS THIS IS PRETY OBIOUS)                      *
  8.  * Credits:w2ch.org-Anon                                         */
  9.  
  10.  
  11. #include <stdio.h> //FILE, fopen(), fprintf(), fclose(), perror(), fgetc(), fseek(), ftell()
  12.  
  13.  
  14. int main(int argc, char **argv)
  15. {
  16.     if(argc!=2) fprintf(stdout, "To many or to few arguments. Usage:%s InputFile", argv[0]);
  17.     else
  18.     {
  19.     FILE *fpInput;
  20.    
  21.     fpInput = fopen(argv[1],"rb");
  22.     if(fpInput==NULL)
  23.     {
  24.         fprintf(stderr, "ERORR1:input.txt(%s) could not be opened\n", argv[1]);
  25.         return 1;
  26.     }
  27.    
  28.     /* ---------------------------------------------------------------------- */
  29.     {
  30.         /**/
  31.         char cCounter=0;
  32.         char cTemp;
  33.         /**/
  34.         char unsigned cHexInputCharecter;
  35.         while((cHexInputCharecter=(char unsigned)fgetc(fpInput))!=(char unsigned)EOF)
  36.         switch(cHexInputCharecter&240)
  37.         {
  38.             case 160:
  39.               fprintf(stdout, "A");
  40.               goto lable1;
  41.             case 176:
  42.               fprintf(stdout, "B");
  43.               goto lable1;
  44.             case 192:
  45.               fprintf(stdout, "C");
  46.               goto lable1;
  47.             case 208:
  48.               fprintf(stdout, "D");
  49.               goto lable1;
  50.             case 224:
  51.               fprintf(stdout, "E");
  52.               goto lable1;
  53.             case 240:
  54.               fprintf(stdout, "F");
  55.               goto lable1;
  56.             default:
  57.               fprintf(stdout, "%d", (cHexInputCharecter&240)/16);
  58.               lable1:
  59.                   switch(cHexInputCharecter&15)
  60.                   {
  61.                        case 10:
  62.                          fprintf(stdout, "A");
  63.                          break;
  64.                        case 11:
  65.                          fprintf(stdout, "B");
  66.                          break;
  67.                        case 12:
  68.                          fprintf(stdout, "C");
  69.                          break;
  70.                        case 13:
  71.                          fprintf(stdout, "D");
  72.                          break;
  73.                        case 14:
  74.                          fprintf(stdout, "E");
  75.                          break;
  76.                        case 15:
  77.                          fprintf(stdout, "F");
  78.                          break;
  79.                        default:
  80.                          fprintf(stdout, "%d", cHexInputCharecter&15);
  81.                          break;
  82.                   }
  83.               /**/
  84.               fprintf(stdout, " ");
  85.               ++cCounter;
  86.               if(cCounter&4)
  87.               {
  88.                    cCounter+=8;
  89.                    cCounter-=4;
  90.                    if(cCounter&32)
  91.                    {
  92.                         fprintf(stdout, "|");
  93.                         fseek(fpInput, ftell(fpInput)-16, SEEK_SET);
  94.                         for(cTemp=16; cTemp--;) if((cCounter=(char)fgetc(fpInput))=='\n') fprintf(stdout, "\\n");
  95.                         else if(cCounter==13 || cCounter==10) fprintf(stdout, " ");
  96.                         else fprintf(stdout, "%c", cCounter);
  97.                         fprintf(stdout, "\n");
  98.                         cCounter=0;
  99.                    }
  100.                    else fprintf(stdout, "   ");
  101.               }
  102.               /**/
  103.               break;
  104.         }
  105.        
  106.         /**/
  107.         fprintf(stdout, "|");
  108.         cTemp=3&cCounter;
  109.         cTemp+=4*((56&cCounter)/8);
  110.        
  111.         fseek(fpInput, ftell(fpInput)-cTemp, SEEK_SET);
  112.         for(cTemp; cTemp--;) if((cCounter=(char)fgetc(fpInput))=='\n') fprintf(stdout, "\\n");
  113.         else if(cCounter==13 || cCounter==10) fprintf(stdout, " ");
  114.         else fprintf(stdout, "%c", cCounter);
  115.         /**/
  116.     }
  117.     /* ---------------------------------------------------------------------- */
  118.    
  119.     if(fclose(fpInput)==EOF) fprintf(stderr, "ERORR2:fclose(%s) failed", argv[1]);
  120.     }
  121.    
  122.     return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment