Сегодня первый раз на практике моему приложению не хватило 32-битного целого! В фотокиоске во время загрузки фотографий со всяких флеш-карточек показывается прогресс-бар. Он рисуется из двух значений: количество загруженных байт и общего количество байт во всех файлах. И вот сегодня появился человек с забитой до отказа 4-гигабайтной флешкой. Соответственно цифра общего объема файлов была чуть больше 4 миллиардов. А в базе для прогресс-бара использовались 32-битные поля со знаком, то есть — 2 миллиарда с копейками максимум. Вот и не хватило.
Так что, лично для меня сегодня рубеж "повседневности" 64 бит перейден, потому что флешка с фтографиями — это уже самый натуральный mainstream, а не "редкие теоретические случаи".
Комментарии: 13
Так надо было без знака использовать :)
Тогда бы хватило.
Use bignums
Месье не сливал DVD?
Эдак скоро будем в BLOBах размеры файлов хранить ((=
хаха! знакомо, очень знакомо ))
гигабайтные файлы в цикле тоже писал, и тоже сталкивался. спасали математические степени (считались байты в килобайтах, а где нужна была точность - в байтах)
Это не тот случай из-за которого нужно переходить на 64-разрядные процессоры. А такой рубеж мной был преодален (не новыми камнями) еще года 3-4 назад, когда я интересовался обработкой цифрового видео и сопутствующими программными алгоритмами. На самом деле я даже избалован 32 разрядами :-), особенно это чувствуется когда нужно возвращаться к 16 или даже к 8.
задумчиво
Вообще, обычно в таких случаях применяют скаллинг. ;)
Можно сделать быстро заплатку и хранить значение - (-1) = "больше 2 Гб". А сколько именно - неважно.
Ничего себе "проще"! Ходи потом по коду, обрабатывай эти "if -1"... Проще как раз просто поле с int на bigint поменять.
Как это все жили раньше с винтами явно больше 4G ;)? Наверно потому что уже лет так 5 для
размеров данных используется long long int.
Или ;)
Виноват, парсер съел угловые кавычки - в последней ;)
строке должно было быть:
Или
long int ?
Да, время 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