2014-11-05 2 views
-2

У меня размер в байтах. Я хочу конвертировать это каждый раз в MB. Но мой код дает неправильный ответ.Преобразование байтов в MB в Perl

sub sizeConversion { 
    my $size = shift; 
    return ($size/(1024 * 1024)); 
} 

my $size = 1024; 
my $size_conversion = &sizeConversion($size); 
print $size_conversion; 

я получаю результат, как:

0.0009765625 

Но я должен получить выход в

0.001024MB 

Пожалуйста, помогите. Заранее спасибо.

+5

Вам лучше взять калькулятор, чтобы подтвердить ваше предположение, что действительно 1/1024 (подсказка: это не 0.001024) –

+2

1024 байта -> 1 КБ -> 1/1024 МБ. Но результат 1/1024 не равен 0,001024, потому что мощность 2 из 1024 не равна 1000000. –

ответ

3

Вы должны знать, что в мире ИТ есть два типа мегабайтов (МБ).

(A) 1 MB = 1 миллион (1 000 000) байт.

Эта MB используется для подарков емкости накопителей на жестких магнитных дисках, DVD и BD, и емкости связи в сетях и т.д.

(B) 1 MB (точнее 1 МиБ) = байты могут быть решены 20 адресных строк = 2^20 (1 048 576) байтов.

Этот MB используется для представления емкости полупроводниковой памяти, такой как RAM, ROM.

Вы можете знать, что данные в ОЗУ адресованы несколькими адресными строками, каждая из которых имеет значение 0 или 1. Если в памяти имеется 10 адресных линий и 8 линий данных, 2^10 (1024) адреса байтов (8 бит) могут быть сохранены. Емкость такой памяти не называлась «1 кило и 24 байта памяти», а «1 килобайтная память». Увеличивая объем памяти, память размером 2^20 байт стала называться 1 мегабайтной памятью.

Если вы используете слово «MB» в смысле (А), вы должны исправить строку в коде

return ($size/(1024 * 1024)); 

в

return ($size/(1000 * 1000)); 

Исправленный код даст вам ответ 0,001024 МБ.

Если вы используете слово «MB» в смысле (B), то 0.0009765625 МБ - правильный ответ.

Существует два вида МБ, поэтому есть два вида правильного ответа.

Это зависит от того, какой ответ вы хотите получить.

+1

На самом деле есть только один вид 'MB', второй вид, который вы упомянули, называется' MiB' http://en.wikipedia.org/wiki/Mebibyte –

5

Вы получаете 0.0009765625, потому что это правильный ответ за то, что вы определили.

Чтобы получить 0.001024, вы должны разделить 1024 на 1000000

Будь MB является 2^20 байт или 10^6 байт зависит от того, вы программируете в сборке или продаже жестких дисков. См. Wikipedia: Megabyte

Согласно Википедии, официальным единицей СИ является 10^6 или 1000000 байт.

+1

Не имеет отношения к ответу; Боюсь, что [Mebibyte] (http://en.wikipedia.org/wiki/Mebibyte) звучит глупо, как Babybyte, или Maybebyte. –

+0

На самом деле «правильный» ответ состоит в том, что 1 'MB' всегда 1000' KB', и это 1000 байт. Таким образом, MB всегда 10^6. Если вы хотите вычислить с 1024, чем правильное окончание, это 'MiB'. Просто потому, что многие люди определяют MB, поскольку 1024 КБ не делают это правильно. –

Смежные вопросы