【问题标题】:what is windows conversion for bytes to mb?什么是字节到mb的Windows转换?
【发布时间】:2017-02-03 10:26:43
【问题描述】:

什么是用于将字节转换为 MB 的 windows converion?
我的文件夹的计算大小是(1,568,653,060 字节)

// 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.46 GB(1,568,686,080 字节)
//将此转换为 MB 给我 1460 MB....

另外 36Mb 是从哪里来的?
我只需要它是准确的......我应该坚持哪种方法?
设置用户文件上传限制

【问题讨论】:

  • 对我来说 1,568,653,060 / 1024/1024 = 1495.98 - 所以它向下舍入 google 使用的是 1000 而不是 1024。
  • 曾几何时,有人认为有必要区分 Mega (1.000.000) 和 Mebi (2^20) 字节。这导致一些人认为使用 1.000 作为表示字节的因子而不是公认的 1024 (2^10) 是明智的。如果您不想让人们嘲笑您,请坚持使用 1024。
  • @ManfredRadlwimmer 我在哪里用过 1000?...float mbValue = (b / 1024f) / 1024f;...google 只是作为一个例子,Q 是为什么我的计算不同于windows文件资源管理器
  • @John Goggle 使用 1000(如果您指定 MB 而不是 MiB),您使用 1024,额外的 MB 来自每个文件,四舍五入到磁盘上的下一个完整段(这就是为什么 Size 和磁盘大小不同)

标签: c# windows filesize fileinfo


【解决方案1】:

Windows 资源管理器显示兆字节,但计算兆字节因此每个连续单位除以 1024 是正确的。

磁盘上的大小包括由于技术原因必须成为文件一部分的空间,例如最后一页(如果它没有完全填满)。它还包括除$DATA 之外的其他流(如果存在)。对于完全适合其目录条目的文件,它甚至可以显示 0 字节。但作为一般规则,该数字始终与文件内容大小不同。

【讨论】:

    猜你喜欢
    • 2013-04-12
    • 2012-08-02
    • 1970-01-01
    • 2013-02-23
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    相关资源
    最近更新 更多