Давайте-ка я вам расскажу, что будучи энтузиастом Visual Basic-а, я страдаю от того, что здесь так много статей с участием избранного мной языка программирования. Поэтому каждый раз, когда я публикую что-то на другом языке, я обычно позволяю себе ехидную ухмылку. Но сегодня я не ухмыляюсь. О да, сегодня я просто злорадствую!

Почему сегодня, спросите вы? Только взгляните на эту функцию преобразования из ASCII в HEX (написанную на C) из CGI приложения, которую прислал нам Кай. Да, С. Тот самый C, который настолько крут, что С-программисты бреются топором, а подпоясываются ломом. Или говоря языком ботанов, настолько крут, что С-программисты вводят все данные в двоичном формате... через два медных кабеля. Она даже хуже чем Худшая реализация на VB всех времен. И она на С!

Так что если у вас не отлегло насчет вашего (возможно менее подверженного жесткому кодированию) языка, то я уже не знаю, что вам поможет. А теперь прошу прощения, пойду набивать себе татуировку VB4¥ под костяшками.

/* meist verwendeten Sonderzeichen entfernen (%Hex) */
for (i=0,j=0;iswitch(buff[i]) {
  case '+':
  value[j] = ' ';
  buff[i] = ' ';
  break;
  case '%':
  strncpy(hexstr, &buff[i+1],2);
  i = i + 2;
  if (((strcmp(hexstr, "00") == 0)) || ((strcmp(hexstr, "01") == 0)) ||
      ((strcmp(hexstr, "02") == 0)) || ((strcmp(hexstr, "03") == 0)) ||
      ((strcmp(hexstr, "04") == 0)) || ((strcmp(hexstr, "05") == 0)) ||
      ((strcmp(hexstr, "06") == 0)) || ((strcmp(hexstr, "07") == 0)) ||
      ((strcmp(hexstr, "08") == 0)) || ((strcmp(hexstr, "09") == 0)) ||
      ((strcmp(hexstr, "0A") == 0)) || ((strcmp(hexstr, "0B") == 0)) ||
      ((strcmp(hexstr, "0C") == 0)) || ((strcmp(hexstr, "0D") == 0)) ||
      ((strcmp(hexstr, "0E") == 0)) || ((strcmp(hexstr, "0F") == 0)) ||
      ((strcmp(hexstr, "10") == 0)) || ((strcmp(hexstr, "11") == 0)) ||
      ((strcmp(hexstr, "12") == 0)) || ((strcmp(hexstr, "13") == 0)) ||
      ((strcmp(hexstr, "14") == 0)) || ((strcmp(hexstr, "15") == 0)) ||
      ((strcmp(hexstr, "16") == 0)) || ((strcmp(hexstr, "17") == 0)) ||
      ((strcmp(hexstr, "18") == 0)) || ((strcmp(hexstr, "19") == 0)) ||
      ((strcmp(hexstr, "1A") == 0)) || ((strcmp(hexstr, "1B") == 0)) ||
      //[РЕД: Обрез]
      ((strcmp(hexstr, "F0") == 0)) || ((strcmp(hexstr, "F1") == 0)) ||
      ((strcmp(hexstr, "F2") == 0)) || ((strcmp(hexstr, "F3") == 0)) ||
      ((strcmp(hexstr, "F4") == 0)) || ((strcmp(hexstr, "F5") == 0)) ||
      ((strcmp(hexstr, "F6") == 0)) || ((strcmp(hexstr, "F7") == 0)) ||
      ((strcmp(hexstr, "F8") == 0)) || ((strcmp(hexstr, "F9") == 0)) ||
      ((strcmp(hexstr, "FA") == 0)) || ((strcmp(hexstr, "FB") == 0)) ||
      ((strcmp(hexstr, "FC") == 0)) || ((strcmp(hexstr, "FD") == 0)) ||
      ((strcmp(hexstr, "FE") == 0)) || ((strcmp(hexstr, "FF") == 0))) {
          value[j] = '%';
          j++;
          strcpy(value, hexstr);
          j = j + 2;
         
          if (strcmp(hexstr, "21") == 0) {
                  z = i - 2;
                  for (k=i-2;<if (k == z) {
                                  strncpy(strg, buff, i-1);
                                  strg[k] = '!';
                          }
                          else strg[k] = buff[i];
                  }
                  strcpy(buff, strg);
          }
          //[РЕД: Обрез]
          if (strcmp(hexstr, "25") == 0) {
                  z = i - 2;
                  for (k=i-2;k<STRLEN(BUFF);K++,I++) color="#000099" if (k == z) {
                                  strncpy(strg, buff, i-1);
                                  strg[k] = ' ';
                                  strg[k+1] = 'P';
                                  strg[k+2] = 'r';
                                  strg[k+3] = 'o';
                                  strg[k+4] = 'z';
                                  strg[k+5] = 'e';
                                  strg[k+6] = 'n';
                                  strg[k+7] = 't';
                                  strg[k+8] = ' ';
                          }
                          else strg[k+8] = buff[i];
                  }
                  strcpy(buff, strg);
          }
          if (strcmp(hexstr, "26") == 0) {
                  z = i - 2;
                  for (k=i-2;k<STRLEN(BUFF);K++,I++) color="#000099" if (k == z) {
                                  strncpy(strg, buff, i-1);
                                  strg[k] = ' ';
                                  strg[k+1] = 'u';
                                  strg[k+2] = 'n';
                                  strg[k+3] = 'd';
                                  strg[k+4] = ' ';
                          }
                          else strg[k+4] = buff[i];
                  }
                  strcpy(buff, strg);
          }
          if (strcmp(hexstr, "27") == 0) {
                  z = i - 2;
                  for (k=i-2;k<STRLEN(BUFF);K++,I++) color="#000099" if (k == z) {
                                  strncpy(strg, buff, i-1);
                                  strg[k] = '"';
                          }
                          else strg[k] = buff[i];
                  }
                  strcpy(buff, strg);
          }
          //[РЕД: Обрез]
          if (strcmp(hexstr, "A9") == 0) {
                  z = i - 2;
                  for (k=i-2;k<STRLEN(BUFF);K++,I++) color="#000099" if (k == z) {
                                  strncpy(strg, buff, i-1);
                                  strg[k] = ' ';
                                  strg[k+1] = 'C';
                                  strg[k+2] = 'o';
                                  strg[k+3] = 'p';
                                  strg[k+4] = 'y';
                                  strg[k+5] = 'r';
                                  strg[k+6] = 'i';
                                  strg[k+7] = 'g';
                                  strg[k+8] = 'h';
                                  strg[k+9] = 't';
                                  strg[k+10] = ' ';
                          }
                          else strg[k+10] = buff[i];
                  }
                  strcpy(buff, strg);
          }
          if (strcmp(hexstr, "AD") == 0) {
                  z = i - 2;
                  for (k=i-2;k<STRLEN(BUFF);K++,I++) color="#000099" if (k == z) {
                                  strncpy(strg, buff, i-1);
                                  strg[k] = '-';
                          }
                          else strg[k] = buff[i];
                  }
                  strcpy(buff, strg);
          }
          //[РЕД: Обрез]
          if (strcmp(hexstr, "FF") == 0) {
                  z = i - 2;
                  for (k=i-2;k<STRLEN(BUFF);K++,I++) color="#000099" if (k == z) {
                                  strncpy(strg, buff, i-1);
                                  strg[k] = 'y';
                          }
                          else strg[k] = buff[i];
                  }
                  strcpy(buff, strg);
          }
          else {
                  z = i - 2;
                  for (k=i-2;k<STRLEN(BUFF);K++,I++) color="#000099" if (k == z) {
                                  strncpy(strg, buff, i-1);
                                  strg[k] = ' ';
                          }
                          else strg[k] = buff[i];
                  }
                  strcpy(buff, strg);
          }
  }
  //[РЕД: Файл целиком
 

Оригинал:http://worsethanfailure.com/Articles/Who_0x27_s_Hard-Core_Now_0x3f_.aspx
Перевод:Евгений Виговский