Я использую класс DriveInfo в своем проекте C# для получения доступных байтов на заданных дисках. Как мне правильно преобразовать это число в мегабайты или гигабайты? Думаю, деление на 1024 не поможет. Результаты всегда отличаются от показанных в проводнике Windows.
Как правильно преобразовать размер файла в байтах в мегабайты или гигабайты?
Ответы (6)
1024 подходит для использования в программах.
Причина, по которой у вас могут быть различия, вероятно, связана с различиями в том, что driveinfo сообщает как «доступное пространство», и какие окна считают доступным пространством.
Обратите внимание, что только производители дисков используют 1000. В окнах и большинстве программ правильное масштабирование — 1024.
Кроме того, хотя ваш компилятор все равно должен оптимизировать это, этот расчет можно выполнить, просто сдвигая биты на 10 для каждой величины:
KB = B >> 10
MB = KB >> 10 = B >> 20
GB = MB >> 10 = KB >> 20 = B >> 30
Хотя для удобочитаемости я ожидаю, что последовательное деление на 1024 будет более четким.
У XKCD есть четкий ответ:
KBa
на этих машинах больше не будет соответствовать Baker's Kilobyte, а станет стандартным.
- person Zarepheth; 15.03.2016
1024 на самом деле неправильно. Международное инженерное сообщество (IEC) разработало в 2000 году стандарт, который, к сожалению, игнорируется компьютерной индустрией. Этот стандарт в основном говорит, что
- 1000 байт — это килобайт, 1000 КБ — это один МБ и так далее. Сокращения: КБ, МБ, ГБ и так далее.
- Широко используемые 1024 байта = 1 килобайт вместо этого должны называться 1024 байта = 1 кибибайт (КиБ), 1024 КиБ = 1 Мебибайт (МиБ), 1024 МиБ = 1 Гибибайт (ГиБ) и так далее.
Вы все можете прочитать его в зоне IEC SI.
Таким образом, чтобы ваши преобразования были правильными и правильными в соответствии с международной стандартизацией, вы должны использовать эту научную нотацию.
df -h
в Linux). Похоже, что IEC — это просто пешка производителей жестких дисков.
- person User1; 03.12.2010
Это зависит от того, хотите ли вы фактический размер файла или размер на диске. Фактический размер файла — это фактическое количество байтов, которые файл использует в памяти. Размер на диске зависит от размера файла и размера блока для вашего диска/файловой системы.
Я смутно припоминаю, что ответ на вопрос, использовать ли 1000 или 1024, лежит в корпусе префикса. Пример: если используется «научная» шкала 1000, то «научная» единица измерения будет кБ (так же, как в кг, кН и т. д.). Если используется компьютерно-ориентированное масштабирование 1024, единицей измерения будет КБ. Итак, заглавная буква научного префикса делает его компьютерно-ориентированным.
Разделите на 1024.