【问题标题】:PHP convert bytes to correct unitsPHP将字节转换为正确的单位
【发布时间】:2012-09-01 09:09:16
【问题描述】:

我正在使用@Mefhttps://stackoverflow.com/users/227532/mef编写的PHP函数https://stackoverflow.com/a/2510459/425964将字节格式化为千字节、兆字节、千兆字节等。

问题是:

echo formatBytes(9287695, 2);

返回8.86 MB。不应该是9.3 MB吗?我在这里遗漏了什么吗?

谢谢。

【问题讨论】:

  • 1 MB = 1024 KB,1 KB = 1024 B

标签: php


【解决方案1】:

它不应该是 9.3 MB,当转换为 KB / MB 等时,字节总是会减少,因为它乘以 1024。

所以如果字节数以 92 开头.. 它永远不会导致 9.3 MB

我想 8.86 是正确的值。

【讨论】:

  • Funny OSX 显示文件为:9,289,033 字节(磁盘上 9.3 MB)
  • 嘿嘿,这意味着它显示的是百万字节,而不是兆字节
  • 是的,可能是OSX 中的一个错误。 :) 哈哈
  • OSX 完全没问题,因为它显示 MEGABytes 而不是 MEBIBytes。
【解决方案2】:

9287695/1024/1024=8.86
9287695/1000/1000=9.30
1 MB = 1024 KB = 1024*1024 字节

【讨论】:

    【解决方案3】:

    内存单位

    Bit=a 1 or 0  
    Byte=8 Bits  
    Kilobyte=1024 Bytes  
    Megabyte=1024 Kilobytes  
    Gigabyte=1024 Megabytes  
    Terabyte=1024 Gigabytes
    

    所以 9287695 字节实际上是 8.86 MB

    【讨论】:

      【解决方案4】:

      IT 界对于区分 Mebi* 和 Mega*、Kibi* 和kilo* 存在很多困惑。您实际上完全正确,因为 8.86 的正确后缀应该是“MiB”而不是“MB”。

      这是因为 1 MiB = 1024 KiB 和 1 KiB = 1024 B。 但是 1 MB = 1000 kB 和 1 kB = 1000 B。

      因此混乱。

      所以 8.86 是可以的 ((9287695/1024)/1024 = 8,857),只要它是 8.86 MiB

      更多信息请参考这里:http://en.wikipedia.org/wiki/Mebibyte

      【讨论】:

        猜你喜欢
        • 2010-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        • 2012-07-05
        相关资源
        最近更新 更多