Няшная / Говнокод #25599 Ссылка на оригинал

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
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
#include <conio.h>

static unsigned char bigArray[256] = {['0'] = 0, ['1'] = 1, ['2'] = 2, ['3'] = 3,
                                      ['4'] = 4, ['5'] = 5, ['6'] = 6, ['7'] = 7,
                                      ['8'] = 8, ['9'] = 9, ['A'] = 10, ['B'] = 11,
                                      ['C'] = 12, ['D'] = 13, ['E'] = 14, ['F'] = 15 };
void StringToByte(const char src[], unsigned char dst[]) 
{
	int q, u = 0;
	for (q = 0; src[q]; q+=2) 
	{
		dst[u] = bigArray[src[q]] << 4;
		if (!src[q+1]) 
			return;
		dst[u++] |= bigArray[src[q+1]];
	}
}

int main()
{
	char string[] = "112255ACBF";
	unsigned char bytes[5];
	StringToByte(string, bytes);
	int i;
	for (i = 0; i!=sizeof(bytes); i++)
		printf("%x ", (int)bytes[i]);
	return 0;
}

Ебическая С-ла.

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

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

  • Для пирфоманса табличку надо было на 65536 брать. И с нижним регистром буквы добавить.
    Ответить
    • В оригинале нижний регистр был - сей ГК не копипаст, но идейное наследие от того кода.
      Ответить
    • Судя по прошлому треду, вариант с 65к табличкой был где-то раза в 2 быстрее, чем с табличкой на 256.

      Но могут быть проблемы с кучей миссов в L1 если прога не только хексы парсит, а ещё чем-то при этом занимается...
      Ответить
      • З.Ы. Хотя за L1 я, наверное, зря боюсь. Горячая часть таблички очень маленькая, а остальная юзается только при кривых данных. На вскидку где-то 32 кешлайна зацепит всего из 1024 потенциальных. Ну раза в 4 больше если буквы в смешанном регистре.
        Ответить
      • Это с какого перепугу он будет быстрее? Разве организация памяти и адресная арифметика зависят от объема массива?
        Ответить
          • Насколько целесообразно стараться попасть в кэш в многозадачной среде?
            Ответить
              • In ancient times (i.e. 10+ years ago) processor caches tended to map virtual memory rather than physical memory. This led to a huge number of problems including having to clear the cache on every context switch in some cases, and problems with data aliasing in the cache. Modern processor caches map physical memory precisely to solve those problems.

                О, боже! Расскажите ещё о проблемах процессоров.
                Ответить
                • Жалкие процессоры!
                  Их работа с кешем лишь забавляет меня
                  Ответить
                    • Жалкие инженеры! Их попытки решить проблему бутылочного горлышка лишь забавляют меня! В моём больном воображении у процессоров > 60 млрд. регистров, и никакие кеши не нужны!
                      Ответить
                      • А как код писать? К регистрам можно обращаться по номеру?
                        Ответить
                        • В восьмибитных AVR регистры вообще на адреса памяти отображены, и их можно в теории (да и на практике) читать как массивчик.
                          http://ww1.microchip.com/downloads/en/devicedoc/atmel-8154-8-bit-avr-atmega16a_datasheet.pdf

                          страница 11
                          > As shown in Figure 6-2, each register is also assigned a data memory address, mapping them directly into the first 32 locations of the user Data Space. Although not being physically implemented as SRAM locations, this memory organization provides great flexibility in access of the registers, as the X-, Y-, and Z-pointer Registers can be set to index any register in the file.

                          https://superuser.com/a/695508
                          > "Memory-mapped registers" can mean several things. One would be the above example of the disk drive controller with memory-mapped control registers. Another, entirely different case would be a processor that actually has its registers in RAM. This was fairly common with early (50s through early 70s) processors, since it reduced parts count considerably, and it also permitted some "clever" programming practices. In a few cases the processor was available in two models, one with memory-mapped registers and the other with (faster) "hardware" registers.
                          Т.е. в древних архитектурах это было довольно распространенное явление, что регистры тупо были в адресном пространстве
                          Ответить
                    • быстрая оперативка не нужна.
                      Нужен быстрый SSD
                      Ответить
              • Но ведь четверг это рыбный день тора
                Ответить
        • > с какого перепугу
          По джва байта одновременно парсит. Тупо инструкций меньше. А процу что 1 байт читать, что 8 - вообще похуй.
          Ответить
          • > по джва байта
            По джва символа в один байт конечно же.
            Ответить
          • А, то есть не по первому и второму шестинадцатиричному разряду, а сразу парами и в массиве также.
            Ответить
    • Ещё есть для структур .len = 20, а в анскильных крестах такого нет.

      Ничтожества! Их проблемы лишь забавляют меня!
      Ответить
          • Как осчастливить крестоблядь - нужно забрать из крестов фичу, а потом её добавить.
            Ответить
        • Оно только для структур.
          struct A { int x, y; };
          struct B { struct A a; };
          struct A a = {.y = 1, .x = 2}; // valid C, invalid C++ (out of order)
          int arr[3] = {[1] = 5};        // valid C, invalid C++ (array)
          struct B b = {.a.x = 0};       // valid C, invalid C++ (nested)
          struct A a = {.x = 1, 2};      // valid C, invalid C++ (mixed)
          (since C++20)
          Ахаха, ничтожества! Ваши инициализаторы лишь забавляют меня!

          То ли дело "JavaScript":
          let a = {"length": 100500, 1: "a", 2: "b", 3: "c"};
          Ответить
          • > let a = {"length": 100500, 1: "a", 2: "b", 3: "c"};
            Фи, как вербозно, то ли дело «Python»:
            a = {"length": 100500, 1: "a", 2: "b", 3: "c"}
            Ответить
              • угадаешь без мануала чему равна длина (#a) в твоем случае?
                Ответить
                • Я вчера как раз мануал читал, к сожалению. Получится 3 т.к. строки и флоаты в ключах длину не инкрементят.
                  Ответить
                  • Ты чисто случайно вчера читал мануал по луа? Тебя что, золотой хуй укусил?
                    Ответить
                  • Использование ключа превращает таблицу из обычного массива в хуйпоймичо, и да: получение длины больше нормально не работает.
                    Ответить
                    • Там же таблица состоит из массива (для подряд идущих интов начиная с единицы) и хешмапы (для остального)?

                      Ну и # возвращает длину именно массива. Т.е. даже если числа не по порядку вставлять - уже длину распидорасит.
                      Ответить
          • А что такое let? Это что-то из «ES6»? Чем оно отличается от var?
            Ответить
            • {let y = 4}
              console.log(y) \\Reference error
              {var y = 4}
              console.log(y) \\ 4

              {...expression}
              Это новая (ES6 maybe) фича блочного пространства имен. Раньше делали так:
              (function(){...expression})()

              Более того
              (function(){var y = 4})()
              console.log(y) \\ Reference error

              В этом и заключается главное отличие let от var - let определена только в ближайшем блоке, а var - в функции.
              Ответить
                • останется конечно

                  больше неконсистентного говна богу неконсистентного говна
                  Ответить
                    • А я что написал?

                      Питонисты имели яйца и потому обосцали и сожгли древнее ненужное говно.
                      У остальных яиц нет
                      Ответить
                      • > обосцали и сожгли
                        Вот, попутали порядок, теперь сжечь до конца не могут.
                        Ответить
                        • сожжение назначено на 2020.

                          правда конечно есть всякие говны типа centos/rh в которых некрофилы будут теребонькать чуть-ли не 2.6 еще лет пять
                          Ответить
                          • В 2020 просто поддержка пропадёт. Сколько там лет после этого XP прожила?
                            Ответить
                            • Смотря где.

                              У сём живет до сих пор, в серьезных конторах за 2-3 года закончилась. Закончилась бы и раньше, но вистой нельзя же было пользоваться.
                              Ответить
                      • > У остальных яиц нет
                        Например начиная с C99 убрали неявный int и сделали обязательным ретурн в не-void функциях. Но всем, как известно, похуй.
                        Ответить
                        • gcc и vc похуй действительно. И верно шлангу тоже

                          я просто пишу

                          int foo(){}
                          
                          main() {
                          foo();
                          }

                          и теку.

                          Там варнинг какой=то, но мне поъуй
                          Ответить
                            • и правда нету. Там c89 только. Дальше надописать на ++ и течь

                              Я как-то поел говна пытаясь там VLA
                              Ответить
              • Классы вместо прототипов завезли. Скоупы завезли. Осталось типизацию прикрутить...
                Ответить
                • стрелочную функцию завезли (которая не насилует this), модули завезли даже.
                  Да, осталась статическая типизация.
                  Ответить
                  • Типизация была в проекте ES4 (черновик опубликован в 2007-м году), который сожгли и обоссали, потому что решили, что в вебе типизация не нужна. Вроде даже какая-то из древних версий Фуррифокса этот стандарт поддерживала.

                    Верните мне мой 2007-й.
                    Ответить
                    • В 2007-м еще колыхались в вебпараше зайчатки разума: xhtml, wsdl, схемы, xpath, xquery, soap, xsl, стат типизация, о потом пришла радость молодая невозможная, и кругом настал нетипизированный пиздец.

                      А разгадка одна: когда ты пишешь в саблайм тебе пофиг на типы
                      Ответить
  • Ну, единственное говно здесь в том, что строка не проверяется. Передашь "govno" и получай сегфолт.
    Ответить
    • Сорян, не заметил, что массив на 256 символов.

      Но строку всё равно надо проверять.
      Ответить
            • Ну раз уже упал, пусть и яйца к брусчатке приколотит - перфоманс же.
              Ответить
              • Почему сайт презика никогда не падает? За него молится патриархз?
                Ответить
                • На него никто не заходит, вот он и не падает.

                  Если у вас нету дома,
                  Пожары ему не страшны,
                  И жена не уйдёт к другому,
                  Если у вас нет жены.
                  Ответить
                  • А разве 86% россиян не читают указы Президента каждый день?
                    Ответить
                    • Не читают. А зачем заходить на сайт, если всё говно расскажут по телевизору и по радио?
                      Ответить
                  • Петушок, а давай ты станешь презиком? Я за тебя проголо... прокукарекаю.
                    Ответить
                • Это что порнохаб или иксхомяк чтоб падать? Толпы страждущих туда не ходят, гектаров траффика не гоняет, от чего ему падать?
                  Ответить
    • Ghostery предотвратил переадресацию с 
      guce.huffpost.com на guce.advertising.com, 
      , которая является частью Advertising.com. 
      
      Этот тег появляется для переадресации на 
      https://guce.advertising.com/collectIdentifiers?sessionId=3_cc-session_518ac5e3-11d0-pituh-pituh-3de5b8cd6138
      Если ссылка выглядит правильно и вы хотите продолжить,
      нажмите на значок ниже, чтобы разрешить Advertising.com и выполнить перезагрузку.


      Какой багор )))
      Ответить
        • Установка сайта завершена, для продолжения перезагрузите компьютер.
          Ответить
        • У Abyssmedia была прога, позволяющая сцомпилировать сайт в *.exe
          Требовалось указать путь к папке с сайтом, на выходе имели бинарь.

          На делфях, кстати, писанная.
          Ответить
        • отгадай загадку
          Жили были два петуха, одного ебли до обеда, а другого после обеда, кому было хуже?
          Ответить
  • Как меня багорит с конио )))
    Ответить
    • лсушай, а ыведь да

      это что-то из моего броландсишнего детства
      Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

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


    8