Convert the file size expressed in bytes to the appropriate unit
Release: 2016-07-25 09:10:49
Original
932 people have browsed it
I saw someone shared code similar to this. Share a piece of code that supports arbitrarily large numbers and is quite simple.
- function formatFileSize($fileSize)
- {
- $unit = array(' Bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB');
- $i = 0;
-
- /*
- while($fileSize >= 1024 && $i < 8)
- {
- $fileSize /= 1024;
- ++$i;
- }
- * /
- /*
- The above code can also be optimized
- Since computers do multiplication faster than division
- */
- $inv = 1 / 1024;
-
- while($fileSize >= 1024 && $i < 8)
- {
- $fileSize *= $inv;
- ++$i;
- }
-
- //return sprintf("%.2f", $fileSize) . $unit[$i];
-
- // Correct the previous result to Integer, but the output is a floating point number with two meaningless 0 decimal places
- $fileSizeTmp = sprintf("%.2f", $fileSize);
-
- // The result of the following code will be correct in 99.99% of cases, Unless you use "super large numbers". :)
- return ($fileSizeTmp - (int)$fileSizeTmp ? $fileSizeTmp : $fileSize) . $unit[$i];
- }
Copy code
- //Test code
- echo formatFileSize(43453765345); // Result: 40.47 GB
-
- echo formatFileSize(4345376534545643543633655244525); // Result: 3594411.22 YB
-
- echo formatFileSize(2048); // Result: 2 KB
Copy code
|
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31