MB 和字节之间的文件大小差异

Pun*_*hil 3 c# fileinfo

我试图理解以下问题。我正在读取文件的文件信息,如下所示:

FileInfo info = new FileInfo(path);
Run Code Online (Sandbox Code Playgroud)

然后,当我这样做时,代码会为我的文件返回16599774info.Length字节。当我将字节转换为MB时,我得到15.8 MB

有人可以向我解释一下字节大小与 MB 大小之间的区别吗?

Ser*_*kiy 8

通常,文件系统以兆字节(MiB) 为单位计算文件大小,但以兆字节(MB) 为单位报告结果。这些单位之间的区别在于,MB 是以 10 为基数的单位,如您所料,它有 1000000 字节(一百万)。但MiB是一个base 2单位,包含1024*1024字节(1048576字节)。如果将 16599774 字节除以 1048576(每兆字节的字节数),您将得到 15.8 兆字节 (MiB)。但操作系统再次以兆字节 (MB) 为单位报告此数字。

请注意,HDD 制造商通常使用这种 base10/base2 技巧并以千兆字节 (GB) 或太字节 (TB) 为单位报告光盘大小。当您检查文件系统中的 HDD 大小时,您会看到完全相同的大小“减少”。例如,5TB 实际上是 4.5 tebibytes TiB。但文件系统会显示 4.5 TB。

  • 从技术角度来看,兆字节以 10 为基数;兆字节以 2 为基数。因此,兆字节恰好是 1,000,000 字节,兆字节是 1,048,576 字节。https://en.wikipedia.org/wiki/Mebibyte (3认同)
  • 我知道这很令人困惑,但它出现在很多常见场景中,例如购买硬盘或新 iPhone,而您购买的是 10 基数,我认为这是一个重要的区别。 (2认同)