2017-02-03 6 views
-1

バイトをMBに変換するWindowsコンバージョンとは何ですか?
を私のフォルダの計算されたサイズがある(1568653060バイト)バイトからmbへのウィンドウ変換は何ですか?

// 1. 
// Get array of all file names. 
string[] a = Directory.GetFiles(path, "*.*"); 

// 2. 
// Calculate total bytes of all files in a loop. 
long b = 0; 
foreach (string name in a) 
{ 
// 3. 
// Use FileInfo to get length of each file. 
    FileInfo info = new FileInfo(name); 
    b += info.Length; 
} 

//b = 1568653060 

//However, googles conversion...convert 1568653060 bytes to mb 
//returns 
//1568653060 b = 1568.65306 mb 

が、私の計算によると

// Return total size in MB int 
float mbValue = (b/1024f)/1024f; 
//mbValue = 1495.98413 
//should return 1496 mb 

が、Windowsが返す....
サイズ:1.45ギガバイト(1568653060バイト)
ディスク上のサイズ:1.46 GB(1,568,686,080バイト)
//これをMBに変換すると、1460 MBになります....

他の36Mbはどこから出ていますか?
私はちょうどそれが正確であることを必要としています...私はどのメソッドに固執すべきですか?
ユーザーファイルのアップロードに関する制限を設定します。

+0

あなたが*「windows returns ...」と言うとき*私はあなたが*ファイルエクスプローラ*を意味すると仮定します。その場合、[エクスプローラは「ディスク上のサイズ」をどのように計算するのですか?](https://blogs.msdn.microsoft.com/oldnewthing/20160427-00/?p=93365)[エクスプローラはフォルダサイズ情報をどのように計算しますかフォルダのツールチップにありますか?](https://blogs.msdn.microsoft.com/oldnewthing/20120503-00/?p=7713)、[Explorerがファイルのサイズを決めることができない理由](https:// blogs.msdn.microsoft.com/oldnewthing/20110315-00/?p=11223)。 – IInspectable

+0

私のために私は1,568,653,060/1024/1024 = 1495.98 - それは切り捨てられたGoogleは1000でない1024を使用した。 – BugFinder

+1

メガ(1.000.000)とメビ(2)の区別をする必要があると思った人がいた^ 20)バイト。これは、確立された1024(2^10)の代わりに、Bytesを表すための要因として1.000を使用することが賢明であると信じさせる原因があります。人々にあなたを笑わせたくない場合は1024に固執する。 –

答えて

1

Windowsエクスプローラはメガバイトを表示しますが、メガビットを計算します。

ディスク上のサイズには、技術的な理由でファイルの一部でなければならないスペースが含まれています(完全にいっぱいでない場合は最後のページなど)。存在する場合は、$DATA以外のストリームも含まれます。ディレクトリエントリに完全に収まるファイルに対しても0バイトを表示することさえできます。しかし、一般的な規則として、その数は常にファイルのコンテンツサイズとは異なります。

関連する問題