1. C++ / Говнокод #9948

    +1004

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    long base64::rlong (char * source)
    {
        long res = 0;
        for (int i = 0; i < 4; i++) ((char *) &res)[3 - i] = source[i];
        return res;
    }
    
    void base64::encode (char * source, char * dest)
    {
        char base[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
        int n = 0;
        for (int nd = 0; nd < ceil(4*((double)strlen(source))/3); nd++)
            dest[n++] = base[rlong(&source[((nd >> 2) << 2)*3 >> 2]) >> (26 - 6*(nd - ((nd >> 2) << 2))) & 0x3F]; 
        for (int i = 0; i < ((int) ceil(((double)n)/4) << 2) - n; i++) dest[n++] = '=';
        dest[n] = 0;
    }

    Ответ преподу по c++. Переводстроки в base64.

    Запостил: antonymus, 14 Апреля 2012

    Комментарии (6) RSS

    • лаба же
      Ответить
      • Каждая строчка должна быть с комментарием. Незачет же.
        Ответить
    • Предлагаю новый говнотег: [laba=cpp][/laba]
      Ответить
    • long base64::rlong (char * source)
      {
          return (long)source[0] << 24 | (long)source[1] << 16 | (long)source[2] << 8 | source[3];
      }

      Надо было так сделать, для полноты.
      Ответить
    • Кулхацкерный стиль кода. Школоте нравится...
      Ответить
      • Не, это идёт из книг по шифрованию. Кулхацкерский стиль в этих книгах очень популярен, уж и не знаю почему.
        Ответить

    Добавить комментарий