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.
- Convertendo Gigabytes em Bytes em base decimal
- 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 umReset
. Vinculamos o botãoConvert
à funçãoconvertToGB()
que converte o valor de byte dado em gigabytes. O botãoReset
está vinculado à funçãoreset()
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çãowindow.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çãoconvertToGB()
é acionada. -
Na função
convertToGB()
, capturamos o valor inserido pelo usuário no campo de byte usando a funçãodocument.getElementById("bytes_input").value
do javascript e o capturamos no VariávelbytesValue
. Na próxima etapa, convertemos esse valor de byte em gigabytes dividindobytesValue
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, exibimosgbValue
na GUI definindo o valorlabel
usandodocument.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 em10000000 Bytes
. Isso significa que, usando o código acima, um byte com um valor maior que10000000 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.