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

C# MB和字节之间的文件大小差异,c#,fileinfo,C#,Fileinfo,我试图理解以下问题。我正在读取一个文件的文件信息,如下所示: FileInfo info = new FileInfo(path); 然后,当我执行info.Length时,代码返回文件的16599774字节。当我将字节转换为MB时,我得到15.8 MB 有人能给我解释一下字节大小与MB大小的区别吗?通常,文件系统以(MiB)计算文件大小,但报告结果时以(MB)表示。这些单位之间的区别在于MB是一个以10为基数的单位,它有1000000字节(一百万),正如您所期望的那样。但是MiB是一个基本的

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

FileInfo info = new FileInfo(path);
然后,当我执行
info.Length
时,代码返回文件的16599774字节。当我将字节转换为MB时,我得到15.8 MB


有人能给我解释一下字节大小与MB大小的区别吗?

通常,文件系统以(MiB)计算文件大小,但报告结果时以(MB)表示。这些单位之间的区别在于MB是一个以10为基数的单位,它有1000000字节(一百万),正如您所期望的那样。但是MiB是一个基本的2单元,它包含1024*1024字节(1048576字节)。如果将16599774字节除以1048576(每兆字节字节数),将得到15.8兆字节(MiB)。但同样,操作系统以兆字节(MB)的形式报告这个数字


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

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


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

我想你认为它正好是100万字节,但实际上是1兆字节=1048576字节

我想你认为它正好是100万字节,但实际上是1兆字节=1048576字节

Mebibyte是数字信息量单位字节的倍数

上面有维基百科页面

Mebibyte是2^20字节,或1048576字节。您没有转换为兆字节,而是转换为兆字节


字节数(16599774)除以字节/MiB(1048576)=15.8308 MiB。

Mebibyte是数字信息量单位字节的倍数

上面有维基百科页面

Mebibyte是2^20字节,或1048576字节。您没有转换为兆字节,而是转换为兆字节


字节数(16599774)除以字节/MiB(1048576)=15.8308MIB。

1=1048576字节,很像但不等于100万字节。1=1048576字节,很像但不等于100万字节。从技术角度看,兆字节是以10为基数的;一个mebibyte在基2中。所以一个兆字节正好是1000000字节,一个兆字节是1048576字节@NickLarsen虽然在技术上是正确的,但这只是增加了混淆,我所知道的大多数系统都使用MB作为1024*1024字节。甚至windows资源管理器也可以。不确定是否有任何系统真的打印出MIB或KIB或其他任何东西。我知道这很令人困惑,但在很多常见的场景中都会出现这种情况,比如购买硬盘驱动器或新iPhone而购买的是base 10,我认为这是一种重要的区别。@HimBromBeere:Linux的一些文件管理确实明确使用MIB,但更多的是出于极客。然而,除此之外,上下文就是一切——1千字节/秒的网络传输实际上是1000字节/秒,而不是1024字节/秒,任何网络工程师都不会相信开发人员会相信这与“他们知道的大多数系统”背道而驰。他们会争辩说,当涉及到滥用时,开发者是少数,这是理所当然的。那匹马很久以前就跑了,混乱总是存在的。从技术角度看,1兆字节在10进制;一个mebibyte在基2中。所以一个兆字节正好是1000000字节,一个兆字节是1048576字节@NickLarsen虽然在技术上是正确的,但这只是增加了混淆,我所知道的大多数系统都使用MB作为1024*1024字节。甚至windows资源管理器也可以。不确定是否有任何系统真的打印出MIB或KIB或其他任何东西。我知道这很令人困惑,但在很多常见的场景中都会出现这种情况,比如购买硬盘驱动器或新iPhone而购买的是base 10,我认为这是一种重要的区别。@HimBromBeere:Linux的一些文件管理确实明确使用MIB,但更多的是出于极客。然而,除此之外,上下文就是一切——1千字节/秒的网络传输实际上是1000字节/秒,而不是1024字节/秒,任何网络工程师都不会相信开发人员会相信这与“他们知道的大多数系统”背道而驰。他们会争辩说,当涉及到滥用时,开发者是少数,这是理所当然的。那匹马很久以前就跑了,混乱一直存在。