我有一个加密的图像,在保存之前我想知道它占用了多少空间。我可以通过strlen($img)
或mb_strlen($img)
获取字符数,但我希望获得16KiB
(或KB
)这样的数字。
然后我以MySQL
格式将字符串保存到blob
数据库中,在那里我可以使用PhpMyAdmin查看它的大小。
修改 如果我使用strlen来获取字符串的字节大小(我想要的),我会得到与MySQL数据库中显示的字节大小不同的值(其中字符串不是保存为char而是保存为博客,意思是二进制)。怎么会这样?如何在数据库中保存字符串时,我怎样才能知道二进制大小的大小。
我只使用MySQL命令
保存字符串 INSERT INTO table (content, bla) VALUES ($string, bla);
(不完全正确,但为了示例目的 - 这在正确的情况下有效)
现在,当我查看我的数据库时,它显示了一个大小,例如315 KB,但是当我接受$string
并对其执行strlen时,它返回类似240000(与KB中的位不同)
我会调查自己......
答案 0 :(得分:1)
这与Dany的回答基本相同,但更为紧凑。
function human_filesize($bytes, $decimals = 2) {
$size = array('B','kB','MB','GB','TB','PB','EB','ZB','YB');
$factor = floor((strlen($bytes) - 1) / 3);
return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$size[$factor];
}
echo human_filesize(filesize($filename));
来源:http://jeffreysambells.com/2012/10/25/human-readable-filesize-php