[#] Funkcja format_size()

( Ostatnio zmieniony śr., 18/06/2008 - 23:53 )
 

PYTHON

#!/usr/bin/env python
#-*- coding:utf-8 -*-

def format_size(size):
  suffixes = [("B",2**10), ("KB",2**20), ("MB",2**30), ("GB",2**40), ("TB",2**50)]
  for suf, lim in suffixes:
    if size > lim:
      continue
    else:
      return round(size/float(lim/2**10),2).__str__()+' '+suf

print format_size(213458923)
# Wynik: 203.57 MB

print format_size(1234)
# Wynik: 1.21 KB

PHP

<?php
function format_size($size) {
  if ($size < 1024) {
    return $size .' B';
  }
  else {
    $size = round($size / 1024, 2);
    $suffix = 'KB';
    if ($size >= 1024) {
      $size = round($size / 1024, 2);
      $suffix = 'MB';
    }
    return $size .' '. $suffix;
  }
}
?>

Powyższa metoda jest najszybsza (0.00011301040­6494), lecz jeśli potrzebujesz więcej zakresów, użyj poniższej, też szybkiej (0.000128030776978) metody:

<?php
function format_size($size, $round = 2) {
    //Size must be bytes!
    $sizes = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    for ($i=0; $size > 1024 && isset($sizes[$i+1]); $i++) $size /= 1024;
    return round($size,$round) .' '. $sizes[$i];
}

print format_size(213458923);
# Wynik: 203.57 MB

print format_size(1234);
# Wynik: 1.21 KB

czas wykonania zmierzysz dzięki opisowi z artykułu: „http://ni.re­coverydata.pl/con­tent/mierzymy-czas-wykonania-skryptu-php“

5
Twoja ocena: Brak Średnio: 5 (2 głosy)