1. PHP / Говнокод #23291

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    $val = trim($str);
            $last = strtolower($str[strlen($str)-1]);
            switch($last) {
                case 'g': $val *= 1024;
                case 'm': $val *= 1024;
                case 'k': $val *= 1024;
            }
            return $val;

    Встретил в коде одного интернет магазина

    Запостил: den_rad, 23 Августа 2017

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

    • Надо двоичными сдвигами делать, а не умножать на степень двойки как анскиллябра
      Ответить
      • А ещё этот код не отличает «мега» от «милли».
        Ответить
        • А где вы видели миллибайт?
          Ответить
          • В теории информации энтропия меряется в том числе в битах, и она может быть рациональным числом.
            Ответить
            • Только вот информационную вместимость флешек и жестких дисков в миллибайтах не измерить. Разве что если это рассчитывается как какая-то вероятностная/усредненная величина. Например, если будет некая флешка с вместимостью 100 байт, но при этом есть вероятность 99.999% что в готовом изделии некий конкретный бит будет битым (нерабочим), то емкость можно тогда будет выражать в частях бита (это будет некая средняя емкость подобных накопителей при такой вот технологии производства). Но человечество до этого по видимому не дошло
              Ответить
              • > не измерить
                А расстояние до луны не измерить в миллиметрах, ага.
                Ответить
            • Кстати, если использовать триты, то число битов там будет нецелым
              Ответить
          • Кстати, а сишный стандарт запрещает делать байт из миллиона бит вместо восьми?
            Ответить
            • Про миллион не знаю, но мы где-то обсуждали компиляторы для DSP, у которых в байте 32 или даже 64 бита.

              Старый сишный стандарт гарантирует только то, что в один байт поместится код любого символа исходного текста программы (т. е. хватит и семи бит). Какой-то другой стандарт (крестовый?) требует уже не меньше восьми.

              А про верхнюю планку вроде нигде не писали.
              Ответить
            • Стал гуглить, где это обсуждали, и наткнулся на Настеньку:
              https://yandex.ru/search/?text=%22CHAR_BIT%22+site%3Agovnokod.ru
              https://www.google.ru/search?q=%22CHAR_BIT%22+site%3Agovnokod. ru
              Ответить
        • В одном килограмме 1024 gрамма
          В одном километре 1024 mетра
          В одном ??? 1024 kельвина?
          Ответить
      • strtolower для единственного символа тоже переголова.
        Ответить

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