Advertisement
thexiv

decompress

Apr 29th, 2020
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.54 KB | None | 0 0
  1.  
  2. void decompressString(ofstream &out, string file_up)
  3. {
  4.     uint64_t pos = 0;
  5.  
  6.     auto i = file_up.begin();
  7.     //for (; pos < file_up.length();)
  8.     {
  9.         //string file_in = file_up.substr(pos,file_up.find((char)(250), pos));
  10.         //string out << nextBlock(file_in,pos);
  11.         //string red = nextFold(file_in, pos);
  12.        
  13.        
  14.  
  15.         unsigned char current = ' ';
  16.         for (; i != file_up.end(); i++)
  17.         {
  18.             unsigned char a = ' ', b = ' ';
  19.             switch ((int)(*i))
  20.             {
  21.                 case 255:
  22.                     a = *i + (1 << 8);
  23.                     i++;
  24.                     b = *i + (1 << 8);
  25.                     out << a << b;
  26.                     break;
  27.                 case 254:
  28.                     a = *i + (1 << 8);
  29.                     i++;
  30.                     b = *i;
  31.                     out << a << b;
  32.                     break;
  33.                 case 253:
  34.                     a = *i;
  35.                     i++;
  36.                     b = *i + (1 << 8);
  37.                     out << a << b;
  38.                     break;
  39.                 case 252:
  40.                     a = *i;
  41.                     i++;
  42.                     b = *i;
  43.                     out << a << b;
  44.                     break;
  45.                 case 251:
  46.                     out << (char)(*i);
  47.                     break;
  48.                 // -----
  49.                 case 128:
  50.                     out << *i;
  51.                     current = *i;
  52.                     break;
  53.                 case 129:
  54.                     out << *i;
  55.                     break;
  56.                 case 130:
  57.                     out << current << current;
  58.                     break;
  59.                 case 131:
  60.                     out << (*i << 4);
  61.                     break;
  62.                 case 132:
  63.                     out << (*i % 16);
  64.                     break;
  65.                 case 133:
  66.                     out << file_up.substr(pos, file_up.find((char)(250), pos));
  67.                     break;
  68.                 case 134:
  69.                     out << file_up.substr(pos, file_up.find((char)(250), pos));
  70.                     break;
  71.                 case 135:
  72.                     for (int j = 0 ; j < 10 && i != file_up.end() ; j++, i++)
  73.                         out << *i;
  74.                     break;
  75.                 case 136:
  76.                     out << *i;
  77.                     break;
  78.                 case 137:
  79.                     out << *i;
  80.                     break;
  81.             }
  82.             current = *i;
  83.             i++;
  84.         }
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement