Сегодня первый раз на практике моему приложению не хватило 32-битного целого! В фотокиоске во время загрузки фотографий со всяких флеш-карточек показывается прогресс-бар. Он рисуется из двух значений: количество загруженных байт и общего количество байт во всех файлах. И вот сегодня появился человек с забитой до отказа 4-гигабайтной флешкой. Соответственно цифра общего объема файлов была чуть больше 4 миллиардов. А в базе для прогресс-бара использовались 32-битные поля со знаком, то есть — 2 миллиарда с копейками максимум. Вот и не хватило.

Так что, лично для меня сегодня рубеж "повседневности" 64 бит перейден, потому что флешка с фтографиями — это уже самый натуральный mainstream, а не "редкие теоретические случаи".

Комментарии: 13

  1. Draco Ater

    Так надо было без знака использовать :)
    Тогда бы хватило.

  2. Miguel

    Use bignums

  3. Макс Лапшин

    Месье не сливал DVD?

  4. wiz

    Эдак скоро будем в BLOBах размеры файлов хранить ((=

  5. Лёхха

    хаха! знакомо, очень знакомо ))
    гигабайтные файлы в цикле тоже писал, и тоже сталкивался. спасали математические степени (считались байты в килобайтах, а где нужна была точность - в байтах)

  6. bw

    Это не тот случай из-за которого нужно переходить на 64-разрядные процессоры. А такой рубеж мной был преодален (не новыми камнями) еще года 3-4 назад, когда я интересовался обработкой цифрового видео и сопутствующими программными алгоритмами. На самом деле я даже избалован 32 разрядами :-), особенно это чувствуется когда нужно возвращаться к 16 или даже к 8.

  7. Alex Shubert

    задумчиво
    Вообще, обычно в таких случаях применяют скаллинг. ;)

  8. Владимир Лучанинов

    Можно сделать быстро заплатку и хранить значение - (-1) = "больше 2 Гб". А сколько именно - неважно.

  9. Иван Сагалаев

    Ничего себе "проще"! Ходи потом по коду, обрабатывай эти "if -1"... Проще как раз просто поле с int на bigint поменять.

  10. koder

    Как это все жили раньше с винтами явно больше 4G ;)? Наверно потому что уже лет так 5 для
    размеров данных используется long long int.
    Или ;)

  11. koder

    Виноват, парсер съел угловые кавычки - в последней
    строке должно было быть:
    Или ;)

  12. Петро

    long int ?

  13. Андрей Карпов

    Да, время 64-бит пришло. Только в ближайшее время ошибок станет еще больше!
    Почему я так говорю? Я в этом заинтересован! :))))

    "20 ловушек переноса Си++ - кода на 64-битную платформу"
    http://www.viva64.com/articles/20_issues_of_porting_C++_code_on_the_64-bit_platform_(rus).html

    "Проблемы тестирования 64-битных приложений"
    http://www.viva64.com/articles/Problems_of_testing_64-bit_applications_(rus).html

    Андрей Карпов,
    Viva64.com Team

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