在Perl中将字节转换为MB

时间:2014-11-05 07:31:23

标签: perl

我有一个字节大小。我希望每次都以MB为单位进行转换。但是我的代码给出了错误的答案。

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

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

我得到的输出为:

0.0009765625

但我应该把输出作为

0.001024MB

请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:5)

您获得0.0009765625,因为这是您所定义内容的正确答案。

要获得0.001024,您必须将1024除以1000000

MB2^20字节还是10^6字节取决于您是在汇编编程还是销售硬盘驱动器。见Wikipedia: Megabyte

根据维基百科,官方SI单位为10^61000000字节。

答案 1 :(得分:3)

您应该知道IT世界中有两种兆字节(MB)。

(A)1 MB = 1百万(1,000,000)字节。

此MB用于显示硬盘驱动器,DVD和BD的容量以及网络中的通信容量等。

(B)1 MB(更准确地说是1 MiB)=字节可以通过20个地址行寻址= 2 ^ 20(1,048,576)字节。

这个MB用于提供半导体存储器的容量,如RAM,ROM。

您可能知道RAM中的数据是由多个地址线寻址的,每个地址线的值为0或1.如果一个存储器有10个地址线和8个数据线,则2 ^ 10(1024)个字节的地址(8位)可以存储。这种存储器的容量不称为“1千字节和24字节存储器”,而是“1千字节存储器”。通过增加内存容量,2 ^ 20字节的内存变成了1兆字节的内存。

如果在(A)意义上使用“MB”一词,则应更正代码中的行

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

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

更正的代码将为您提供0.001024 MB的答案。

如果在(B)意义上使用“MB”一词,则0.0009765625 MB是正确答案。

有两种MB,所以有两种正确答案。

这取决于你想要得到的答案。