Кресты / Говнокод #503 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
...

char hex[16];
int i;

for (i = 1; i<=len; i++)
{
hex[1]="0";hex[2]="1";hex[3]="2";hex[4]="3";
hex[5]="4";hex[6]="5";hex[7]="6";hex[8]="7";
hex[9]="8";hex[10]="9";hex[11]="A";hex[12]="B";
hex[13]="C";hex[14]="D";hex[15]="E";hex[16]="F";

printf ("%c", hex[buff[i-1]>>4<<4/16-1]);
printf ("%c", hex[buff[i-1]>>4<<4 ^ buff[i-1]-1]);}

...

потрясающий вывод чисел в 16-й системе счисления. родители девушки похоже наиболее яркие представители Индии и Китая...

Запостил: guest guest, (Updated )

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

  • Армитаж:
    Тупые понты!
    Во-первых с ошибками
    hex[16]="F";

    Обращение за пределы массива.
    Во-вторых не оптимально:
    hex[buff[i-1]>>4<<4

    А можно
    hex[buff[i-1] & 0xF0
    Ответить
  • джулиан:
    во 2/2-х, нет обращения за пределы массива
    во 2>>1<<1-х, если и говорить об оптимальности то начинать с того что массив начинается с нуля...
    Ответить
  • >hex[buff[i-1]>>4<<4/16-1

    разве оператор<< не имеет приоритет ниже деления? Ведь работает же такое без скобок:

    cout << 256/16; // вывод "16"
    Ответить
    • Одно дело битовый сдвиг, другое оператор << для сложного объекта.
      Ответить
  • Помоему вполне красиво смотрелось бы
    Нет переполнений и вполне шустро

    const char hex[] = "0123456789ABCDEF";
    for (i = 0; i<len; i++) {
    printf ("%c%c", hex[(buff[i]>>4)&15], hex[buff[i]&15]);
    }
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8