Converter bytes em gigabytes usando JavaScript

  1. Convertendo para Base Decimal
  2. Convertendo para base binária

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.