Переводим байты в человекочитаемый вид
Поводом для статьи послужила моя забывчивость, когда мне очень понадобилась давно написанная функция и я все никак не мог ее найти среди множества сайтов. Конечно я ее нашел, но времени ушло немало, для такой скромной функции, а посему я решил постить в этот блог свои подручные функции написанные на PHP, что-бы было одно место, где искать.
Функция переводит числовые значения в байтах в удобочитаемый вид. Вот примеры вывода:
bytes2readable(1000); // 0.98 КБ
bytes2readable(10000); // 9.77 КБ
bytes2readable(123456789); // 117.74 МБ
bytes2readable(109951162776); // 102.4 ГБ
bytes2readable(9000511627776); // 8.19 ТБ
bytes2readable(5000511627776954); // 4.44 ПБ
function bytes2readable($v, $divisor = 1024, $l = 0) {
$label = array(» КБ», » МБ», » ГБ», » ТБ», » ПБ»);
$precision = 2;
$val = $v / $divisor;
if (floor($val) >= $divisor) {
$l++;
$val = bytes2readable(floor($val), $divisor, &$l);
}
return round($val, $precision).$label[$l];
}
?>
здесь:
$divisor — делитель (количество байт в Кбайте и т.д., по умолчанию 1024)
$label — массив названий градаций Ваших пороговых значений
$precision — точность округления после запятой
Отлично !
В блогролл ! =)
Пользуйтесь на здоровье :)
Когда-то писал подобную функцию, конечно она не так элегантна как ваша.
Но тогда в голову мне пришла мысль, что 988 байт лучше записывать как 988 байт, а не 0,96 КБ. В моей функции был порог 8 192 (8000 = 8 000 байт, 8 200 = 8,00 КБ и т.д.)
Мысль понятна, бывают и такие случаи. За элегантность спасибо.