2017-02-03 15 views
-1

바이트를 MB로 변환하는 Windows 변환이란 무엇입니까?
을 내 폴더의 계산 된 크기는 (1,568,653,060 바이트)바이트를 mb로 변환하는 Windows 변환이란 무엇입니까?

// 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 

하지만 창문을 반환 ....
크기 : 1.45 GB (1,568,653,060 바이트)
디스크의 크기 : 1.46GB (1,568,686,080 바이트)
//이 값을 MBs로 변환하면 1460MB가됩니다 ....

다른 36Mb는 어디에서 나옵니까?
나는 그것을 정확히 필요로합니다 ... 어떤 방법을 고수해야합니까?
사용자 파일 업로드 제한 설정

+0

* "windows returns ..."라고 말하면 * 파일 탐색기 *를 사용한다고 가정합니다. 이 경우 Explorer는 어떻게 "디스크의 크기"를 계산합니까?] (https://blogs.msdn.microsoft.com/oldnewthing/20160427-00/?p=93365), [Explorer는 폴더 크기 정보를 어떻게 계산합니까? 폴더 툴팁에?] (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은 100을 제외한 1000을 사용했습니다. – BugFinder

+1

옛날에는 메가 (1.000.000)와 메비 (2)를 구별하는 것이 필요하다고 생각한 사람이있었습니다^20) 바이트. 이로 인해 어떤 사람들은 잘 정립 된 1024 (2^10) 대신에 Bytes를 나타 내기위한 요인으로 1.000을 사용하는 것이 현명하다고 믿고 있습니다. 사람들이 당신을 비웃는 것을 원하지 않으면 1024로 고정하십시오. –

답변

1

Windows 탐색기는 메가 바이트를 표시하지만 메가 바이트를 계산하므로 각 연속 단위에 대해 1024로 나누면 정확합니다.

디스크의 크기에는 기술적 인 이유로 파일의 일부 여야하는 공간이 포함됩니다 (예 : 완전히 가득 차지 않은 경우 마지막 페이지). 또한 $DATA이 아닌 다른 스트림도 포함됩니다. 디렉토리 항목에 완전히 들어 맞는 파일의 경우에도 0 바이트를 표시 할 수 있습니다. 그러나 일반적으로이 숫자는 파일 내용 크기와 항상 다릅니다.