PHP将字节转换为正确的单位


PHP convert bytes to correct units

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

问题是:

echo formatBytes(9287695, 2);

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

谢谢。

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

因此,如果字节号以92开头,它将永远不会导致9.3 MB的

我想8.86是正确的数值。

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

内存单位

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

因此9287695字节实际上是8.86 MB

在IT世界中,关于区分Mebi*和Mega*、Kibi*和kilo*有很多困惑。事实上,你是完全正确的,因为8.86的后缀应该是"MiB",而不是"MB"。

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

因此混淆。

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

请参阅此处了解更多信息:http://en.wikipedia.org/wiki/Mebibyte