PHP: Wie kann ich Bytes in ein lesbares Format (KB, MB, GB, …) konvertieren?

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




C64: Video: Mit Turbo Macro Pro den C64 in Assembler programmieren (2019, engl.)

Robin Harbron aus Kanada zeigt in diesem Video (00:22:50, engl.) wie man auf dem C64 mit dem Turbo Macro Pro Editor in Assembler programmiert. Er erklärt kurz und knapp die Grundlagen von Assembler / Maschinensprache (Opcodes) und Turbo Macro Pro. Dieser komfortable Assembler Editor für den Commodore 64 ist 1985 von Wolfram Roemhild (Fa. Omikron) geschrieben worden und wird heute noch von der C64-Szene verwendet. Es gibt den TMP auch als Cross-Assembler für verschiedene Betriebssysteme.