ホームページ  >  記事  >  バックエンド開発  >  バイト単位で表されたファイル サイズを適切な単位に変換します

バイト単位で表されたファイル サイズを適切な単位に変換します

WBOY
WBOYオリジナル
2016-07-25 09:10:49934ブラウズ
誰かがこれに似たコードを共有しているのを見ました。任意の大きな数値をサポートする非常に単純なコードを共有します。
  1. 関数 formatFileSize($fileSize)
  2. {
  3. $unit = array(' Bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB');
  4. $i = 0;
  5. /*
  6. while($fileSize >= 1024 && $i {
  7. $fileSize /= 1024;
  8. ++$i;
  9. }
  10. * /
  11. /*
  12. 上記のコードは最適化することもできます
  13. コンピューターは割り算よりも乗算の方が速いため
  14. */
  15. $inv = 1 / 1024;
  16. while($fileSize >= 1024 && $i < 8)
  17. {
  18. $fileSize *= $inv;
  19. ++$i;
  20. }
  21. // return sprintf("%.2f", $fileSize) . $unit[$i];
  22. // 前の結果を次のように修正します。整数ですが、出力は意味のない小数点以下 2 桁の 0 を含む浮動小数点数です
  23. $fileSizeTmp = sprintf("%.2f", $fileSize);
  24. // 次のコードの結果は 99.99% の場合正しいでしょう。 , 「超大きな数字」を使わない限り。 :)
  25. return ($fileSizeTmp - (int)$fileSizeTmp ? $fileSizeTmp : $fileSize) .
  26. }
コードをコピーします
    //テストコード
  1. echo formatFileSize(43453765345) // 結果: 40.47 GB
  2. echo formatFileSize(4345376534545643543633655244525); // 結果: 3594411.22 YB
  3. echo formatFileSize(2048) // 結果: 2 KB
  4. ;
コードをコピー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。