Nossos pensamentos, nossas atitudes, nossas emoções, tudo são formas de energia, constantemente influenciando o mundo a nossa volta. (Diane Dreher)

logo Moraga  
Principal
Categorias
Ferramentas

telescópio

Semanal Mensal Geral
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Verificar CPF com PHP
  3. Jogo da velha ou Tic tac toe
  4. Captcha em PHP
  5. createElement - Solução compatível com os navegadores
  6. removeChild - Remover elementos HTML por Javascript
  7. Copiando tabelas e removendo registros duplicados no MySQL
  8. Gerando Thumbnails com PHP
  9. Removendo linhas e espaços em branco de strings
  10. Apache Expires Header - Cache de imagens, Javascript e CSS
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Verificar CPF com PHP
  3. Captcha em PHP
  4. Jogo da velha ou Tic tac toe
  5. Copiando tabelas e removendo registros duplicados no MySQL
  6. createElement - Solução compatível com os navegadores
  7. removeChild - Remover elementos HTML por Javascript
  8. Gerando Thumbnails com PHP
  9. Removendo linhas e espaços em branco de strings
  10. Apache Expires Header - Cache de imagens, Javascript e CSS
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Captcha em PHP
  3. Jogo da velha ou Tic tac toe
  4. createElement - Solução compatível com os navegadores
  5. Copiando tabelas e removendo registros duplicados no MySQL
  6. Apache Expires Header - Cache de imagens, Javascript e CSS
  7. Removendo linhas e espaços em branco de strings
  8. removeChild - Remover elementos HTML por Javascript
  9. Verificar se existe um valor no Array em Javascript
  10. Gerando Thumbnails com PHP
e-mail Enviar por e-mail imprimir Imprimir
PHP

Converter Byte em KB, MB, GB, TB, EB

Por Alejandro Fernandez Moraga

Foto por <a rel="nofollow" href="http://www.flickr.com/photos/dicemanic/19743890/">Dicemanic</a> Foto por Dicemanic

A função byte_convert converte Byte em Kilobyte (KB), Megabyte (MB), Gigabyte (GB), Terabyte (TB), Petabyte (PB), Exabyte (EB), Zettabyte (ZB) e Yottabyte (YB). A menor unidade que a função pode retornar é Kilobyte (KB).

Como funciona?

Em um loop do..while o valor passado por parâmetro é dividido por 1024 ao menos uma vez e atualizado. A cada divisão o valor de $unit é incrementado, representando uma divisão sucedida e aumento na grandeza do número. Enquanto o número de Bytes for maior que 1024 o loop é executado. Finalmente o valor de $unit é substituído pela unidade de medida adequada e a função sprintf formata o valor que é retornado.

Teoricamente, o valor pode ser dividido até 9 vezes retornando Yottabytes. Se o valor for maior que 1237940039285380274899124224 (número de Bytes para 1024 Yottabytes) o valor retornado não terá unidade de medida.

byte_convert(750); // 0.73KB
byte_convert(820, 5); // 0.80078KB
byte_convert(1024); // 1.00KB
byte_convert(2050, 4); // 2.0020KB
byte_convert(6453290); // 6.15MB
byte_convert(28031990); // 26.73MB
byte_convert(281219901986); // 261.91GB
byte_convert(98332457217617); // 89.43TB
byte_convert(167864165487567, 9); // 152.671569128TB
byte_convert(4878741278754572454); // 4.23EB
byte_convert(787546742132165465745, 4); // 683.0879EB

Fórmula matemática

Para converter uma unidade acima divide-se por 1024 e para converter uma unidade abaixo multiplica-se por 1024.

Exemplo: 2000 bytes para Kilobytes, uma unidade acima, é 2000/1024 que resulta em aproximadamente: 1.95 KB.
1.2 GB para Megabytes, uma unidade abaixo, é 1.2 * 1024 que resulta em: 1228.8 MB.

Conversões

1 Byte = 8 Bit
1 Kilobyte = 1024 Bytes
1 Megabyte = 1048576 Bytes
1 Gigabyte = 1073741824 Bytes
1 Terabyte = 1099511627776 Bytes
1 Petabyte = 1125899906842624 Bytes
1 Exabyte = 1152921504606846976 Bytes
1 Zettabyte = 1180591620717411303424 Bytes
1 Yottabyte = 1208925819614629174706176 Bytes

Código fonte

/**
 * @author Alejandro Fernandez Moraga
 * @param integer $bytes Bytes
 * @param integer $precision Número de casas de precisão
 * @return string
 */
function byte_convert($bytes, $precision=2) {
	$units = array('', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
	$unit = 0;
   
	do {
		$bytes /= 1024;
		$unit++;
	} while ($bytes > 1024);
   
	return sprintf("%1.{$precision}f%s", $bytes, $units[$unit]);
}
Comentários
  • Jonil (www.sonidos.com.br) 10 de Fevereiro de 2009 16:48

    Faleu pelo post, precisei isso muito para javascript entao converti seu codigo:


    function format_number(pnumber,decimals){
    if (isNaN(pnumber)) { return 0};
    if (pnumber=='') { return 0};

    var snum = new String(pnumber);
    var sec = snum.split('.');
    var whole = parseFloat(sec[0]);
    var result = '';

    if(sec.length > 1){
    var dec = new String(sec[1]);
    dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals)));
    dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals));
    var dot = dec.indexOf('.');
    if(dot == -1){
    dec += '.';
    dot = dec.indexOf('.');
    }
    while(dec.length <= dot + decimals) { dec += '0'; }
    result = dec;
    } else{
    var dot;
    var dec = new String(whole);
    dec += '.';
    dot = dec.indexOf('.');
    while(dec.length <= dot + decimals) { dec += '0'; }
    result = dec;
    }
    return result;
    }


    function byte_convert(bytes, precision) {
    units = new Array('', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    unit = 0;
    if(!precision) precision = 2;
    do {
    bytes /= 1024;
    unit++;
    } while (bytes > 1024);

    return format_number(bytes,precision) + " " + String(units[unit]);
    }




    Obs: Só não consegui converter usando sprintf então tem essa outra função (format_number), se alguem souber

    Espero ter ajudado

  • rafaela 17 de Maio de 2009 15:20

    naum itendi nadinhaa

  • bengala 15 de Outubro de 2009 18:23

    num itendi o q voce falo!!!

  • Gilberto 19 de Fevereiro de 2010 19:20

    isso é demais!!! usando a unidade yotabyte posso ter o que eu quiser e quando quiser


Comentar
captcha