Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Perl中将字节转换为MB_Perl - Fatal编程技术网

在Perl中将字节转换为MB

在Perl中将字节转换为MB,perl,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.00102

我有一个字节大小。我想每次都转换成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

请帮忙。提前感谢。

您将获得
0.0009765625
,因为这是您定义的正确答案

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

MB
2^20
字节还是
10^6
字节取决于您是在组装中编程还是在销售硬盘驱动器。看


根据维基百科,官方的SI单位是
10^6
1000000
字节。

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

(A) 1 MB=100万(1000000)字节

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

(B) 1 MB(更准确地说是1 MiB)=字节可以由20个地址行寻址=2^20(1048576)字节

这个MB用来表示半导体存储器的容量,如RAM、ROM

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

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

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

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

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

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


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

你最好用计算器来验证你的假设:1/1024到底是什么(提示:它不是0.001024)1024字节->1KB->1/1024MB。但是1/1024的结果不是0.001024,因为1024的幂2不是1000000。与答案无关;我担心这听起来很愚蠢,就像Babybyte或Maybebyte。实际上“正确”的答案是1
MB
总是1000
KB
这是1000字节。所以MB总是10^6。如果要使用1024进行计算,则正确的结尾是
MiB
。仅仅因为很多人将MB定义为1024KB并不正确。实际上只有一种
MB
,您提到的第二种叫做
MiB
return ($size / (1000 * 1000));