Converter bytes em gigabytes usando JavaScript

Nithin Krishnan 12 outubro 2023
  1. Convertendo para Base Decimal
  2. Convertendo para base binária
Converter bytes em gigabytes usando JavaScript

Você já se perguntou quantos bytes existem em um Gigabyte? Gigabyte é uma unidade de medida comumente usada. Gigabyte é amplamente usado em nosso dia-a-dia, o tamanho de arquivo de um filme, a capacidade de um disco rígido, até mesmo o tamanho da memória de acesso aleatório em nossos laptops ou telefones celulares, todos representamos com gigabytes. Todas as unidades, nesses casos, usadas para tratá-los estão em Gigabytes. É necessário um pouco de matemática para a conversão de bytes em gigabytes. É semelhante a converter metros em quilômetros. Vamos ver como podemos fazer a conversão em JavaScript. Existem algumas abordagens para a conversão de bytes em gigabytes, que são as seguintes.

  1. Convertendo Gigabytes em Bytes em base decimal
  2. Convertendo Gigabytes em Bytes na Base Binária

Convertendo para Base Decimal

A dúvida mais comum que surge a todos é se um valor de kilobyte é 1024 bytes ou 1000 bytes. Ao pesquisar no Google, obtemos respostas mistas. Mas o conceito subjacente é simples. Em um sistema numérico decimal, um valor de Kilobyte é 1000 bytes, ao passo que, em um sistema numérico binário, o valor é 1024 bytes. Conseqüentemente, os parâmetros de conversão mudam com base nessa ideologia.

Justificativa para conversão com base decimal

Antes de começarmos a explicação, veremos as unidades de conversão de chave. Como estamos lidando com uma base numérica decimal, usaremos a seguinte lógica de conversão.

  • 1 KiloByte = 1000 Byte
  • 1 Megabyte = 1000 KiloByte
  • 1 GigaByte = 1000 MegaByte

Portanto, 1 GigaByte = 1000 * 1000 * 1000 Bytes. Em outras palavras, um GigaByte é equivalente a 10 elevado a 9 (10 ^ 9) bytes. Portanto, a simples pesquisa de 1 GB no google nos dá uma representação como 1e+9. 1e+9 é igual a 1 com zeros 9. Essa é a essência do cálculo da conversão.

Código de Conversão

Agora entendemos o cálculo por trás das conversões e as várias unidades de bytes. Vamos rapidamente percorrer o código javascript para converter um número (número de bytes) fornecido como entrada. O código retornará o valor equivalente em Gigabyte para ele e o exibirá na tela.

<h3><center>Byte to GB</center></h3>
<div>
    <center>
        <input type="text" id="bytes_input"><label>Bytes</label>
    </center>
</div>
<div>
    <center>
        <button onclick="convertToGB()">Convert</button>
        <button onclick="reset()">Reset</button>
    </center>
</div>
<center>
    <div>
        <label>Result: </label> <label id="gbValue">0</label> GB
    </div>
</center>
window.onload =
    function() {
  reset();
  updateDisplay(0);
}

function convertToGB() {
  let bytesValue = document.getElementById('bytes_input').value;
  let gbValue = (bytesValue / (1000 * 1000 * 1000)).toFixed(2);
  updateDisplay(gbValue);
}

function reset() {
  document.getElementById('bytes_input').value = 0;
  updateDisplay(0);
}


function updateDisplay(val) {
  document.getElementById('gbValue').innerHTML = val;
}

As etapas são as seguintes.

  • Nós projetamos uma GUI HTML para capturar o número de bytes do usuário. A GUI tem um botão Convert e um Reset. Vinculamos o botão Convert à função convertToGB() que converte o valor de byte dado em gigabytes. O botão Reset está vinculado à função reset() para redefinir os valores para que o usuário possa tentar valores mais novos para converter.
  • A execução do código começa com a função window.onload(). A função window.onload() é a primeira a ser executada quando a página é carregada. Nesta função, redefinimos os valores de Gigabyte de entrada e saída para 0.
  • Assim que o usuário insere um valor de byte e clica no botão Converter, a função convertToGB() é acionada.
  • Na função convertToGB(), capturamos o valor inserido pelo usuário no campo de byte usando a função document.getElementById("bytes_input").value do javascript e o capturamos no Variável bytesValue. Na próxima etapa, convertemos esse valor de byte em gigabytes dividindo bytesValue por (1000 * 1000 * 1000). Lembre-se de que dividir o valor do byte por 1000 nos dá o valor do kilobyte, dividindo-o ainda mais por mil retorna o valor do megabyte e dividindo o valor dos megabytes nos dá a representação dos gigabytes para os bytes.
  • Fazemos esses cálculos e armazenamos o resultado na variável gbValue. Na próxima linha, exibimos gbValue na GUI definindo o valor label usando document.getElementById("gbValue").innerHTML. E, portanto, o valor convertido é exibido no HTML.

Observações

  • Em essência, vamos exigir um byte com um valor com mais de sete dígitos para obter um equivalente em Gigabyte tangível para ele. O valor mínimo de saída é 0.01 GB, que se converte em 10000000 Bytes. Isso significa que, usando o código acima, um byte com um valor maior que 10000000 Bytes será mostrado na saída. A saída para valores menores do que isso será 0 GB.
  • Existe uma limitação do número de dígitos que uma variável pode conter em javascript. JavaScript tem uma constante Number.MAX_SAFE_INTEGER que define o valor máximo que uma variável de número pode conter em javascript que é 9007199254740991. Conseqüentemente, o código não converterá nenhum número de byte a mais do que ele na representação de Gigabytes. Podemos perder a precisão durante a conversão. Nós não o recomendamos.
  • De acordo com o código que vimos acima, o valor de saída mostra valores arredondados para duas casas decimais. Usamos a função Number.toFixed() do JavaScript. De acordo com a linha (bytesValue / (1000 * 1000 * 1000)).toFixed(2), a saída será de 2 casas decimais. Se mostrarmos o valor de gigabyte com melhor precisão, podemos ajustar o código com .toFixed(3) ou .toFixed(4) de acordo com o requisito.

Convertendo para base binária

A maneira mais comum de converter um valor de byte em um Gigabyte é com o valor de base binária. A maioria de nós está ciente do valor unitário 1024. Ao contrário do sistema decimal, onde a divisão é por 1000, para converter para unidades de byte mais altas, no sistema numérico binário, dividimos pelo fator 1024.

Base para conversão com base binária

Antes de examinar o código da conversão, vejamos o valor da unidade de conversão no sistema numérico binário. Aqui, a justificativa girará em torno de 1024 (ou seja, 2 elevado à potência 10 ou 210).

  • 1 KiloByte = 1024 Byte
  • 1 Megabyte = 1024 KiloByte
  • 1 GigaByte = 1024 MegaByte

Portanto, no sistema de base binário, 1 GigaByte = 1024 * 1024 * 1024 Bytes. Converter um valor de número de byte em Gigabyte exigirá sua divisão por 1024 * 1024 * 1024.

Código de Conversão

O código a seguir converte o número de bytes em uma representação de gigabytes no sistema binário.

<h3><center>Byte to GB</center></h3>
<div>
    <center>
        <input type="text" id="bytes_input"><label>Bytes</label>
    </center>
</div>
<div>
    <center>
        <button onclick="convertToGB()">Convert</button>
        <button onclick="reset()">Reset</button>
    </center>
</div>
<center>
    <div>
        <label>Result: </label> <label id="gbValue">0</label> GB
    </div>
</center>
window.onload =
    function() {
  reset();
  updateDisplay(0);
}

function convertToGB() {
  let bytesValue = document.getElementById('bytes_input').value;
  let gbValue = (bytesValue / (1024 * 1024 * 1024)).toFixed(2);
  updateDisplay(gbValue);
}

function reset() {
  document.getElementById('bytes_input').value = 0;
  updateDisplay(0);
}


function updateDisplay(val) {
  document.getElementById('gbValue').innerHTML = val;
}

Em comparação com o código com a conversão do sistema de base decimal, a única diferença aqui é que usamos o fator 1024 em vez de 1000 que é evidente a partir da linha (bytesValue / (1024 * 1024 * 1024)).toFixed(2).

Observações

  • A mesma limitação se aplica a este método para o intervalo de número máximo que pode ser inserido. Um número maior que 9007199254740991 não garante uma conversão bem-sucedida.
  • Podemos ajustar a precisão alterando o parâmetro da função toFixed() na linha (bytesValue / (1024 * 1024 * 1024)).toFixed(2). Normalmente, na maioria dos casos, 2 ou 3 dígitos são preferidos após o decimal.
  • Os resultados podem ser diferentes em ambas as conversões, a conversão de base decimal e a conversão de base binária. A comparação entre os dois métodos é inválida, pois será como comparar maçã e laranja. Os resultados estão nos respectivos sistemas de base numérica. Isso significa que, no sistema de base decimal de conversão de bytes em gigabytes, o resultado será a representação de gigabytes no sistema de numeração decimal e vice-versa para o sistema de base numérica binária.