Letztes Update am Mi, 26 Apr 2023 15:06:20 +0200 von Andreas Potthoff
Ich brauchte die Anzahl der Bytes in einem lesbaren Format mit 2 Stellen nach dem Komma und habe folgende logarithmische Funktion verwendet. Hier wird der Binärpräfix (Basis 2) und nicht der Dezimalpräfix (Basis 10) verwendet, obwohl das nicht ganz korrekt ist. Wer es korrekt haben möchte ändert einfach den Parameter zu $base=1000. Für mich ist ein Kilobyte immer noch 1024 Bytes. Festplattenhersteller sehen das manchmal unterschiedlich, wo ein Terrabyte (TB) mal 1.000.000.000.000 Bytes und mal (TiB) 1.099.511.627.776 Bytes sind.
Dezimalpräfixe: Binärpräfixe:
Kilobyte (kB) 1000 = 103 Kibibyte (KiB) 1024 = 210
PHP Funktion:
// convert bytes format function format_Bytes($size,$level=0,$precision=2,$base=1024) { if ($size === '0' || $size === null) { return "0 B"; } else $unit = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB','YB'); $times = floor(log($size,$base)); return sprintf("%.".$precision."f",$size/pow($base,($times+$level)))." ".$unit[$times+$level]; }
Links:
Github Gist: https://gist.github.com/ElectroDrome/374b42422452561faacbde047300ff45
Wikipedia: https://de.wikipedia.org/wiki/Byte
Da steckt ein wenig Gehirnschmalz drin! Kann ich genauso gebrauchen…