使用 JavaScript 将字节转换为千兆字节
你有没有想过一个千兆字节有多少字节?千兆字节是常用的计量单位。千兆字节广泛用于我们日常电影的世界文件大小、硬盘容量,甚至笔记本电脑或手机中随机存取存储器的大小,我们都用千兆字节表示。在这些情况下,用于解决这些问题的所有单位都以千兆字节为单位。将字节转换为千兆字节需要一些数学知识。它类似于将米转换为公里。让我们看看如何在 JavaScript 中进行转换。有几种将字节转换为千兆字节的方法,如下所示。
- 以十进制为单位将千兆字节转换为字节
- 将千兆字节转换为二进制基字节
转换为十进制基数
每个人最常见的疑问是千字节值是 1024 字节还是 1000 字节。在 Google 中搜索时,我们得到的反应不一。但基本概念很简单。在十进制数字系统中,一千字节值是 1000
字节,而在二进制数字系统中,该值是 1024
字节。因此,转换参数会根据这种意识形态而改变。
十进制转换的基本原理
在开始解释之前,我们先来看看转换单位。当我们处理十进制数基时,我们将使用以下转换原理。
- 1 千字节 = 1000 字节
- 1 兆字节 = 1000 千字节
- 1 GB = 1000 兆字节
因此,1 GB = 1000 * 1000 * 1000 字节。换句话说,一 GigaByte 相当于 10 的 9 (10^9) 字节的幂。因此,在谷歌中简单地搜索 1 GB
会给我们一个类似于 1e+9
的表示。1e+9
等于 1
有 9
个零。这就是转换计算的要点。
转换代码
我们现在已经了解了转换背后的计算和字节的各种单位。让我们快速浏览 javascript 代码以转换作为输入给出的数字(字节数)。该代码将为其返回 Gigabyte 等效值并将其显示在屏幕上。
<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;
}
步骤如下。
-
我们设计了一个 HTML GUI 来捕获用户的字节数。GUI 有一个
Convert
和一个Reset
按钮。我们将Convert
按钮绑定到convertToGB()
函数,该函数将给定的字节值转换为千兆字节。Reset
按钮与reset()
函数绑定以重置值,以便用户可以尝试转换较新的值。 -
代码的执行从
window.onload()
函数开始。window.onload()
函数是页面加载时第一个执行的函数。在此函数中,我们将输入和输出 Gigabyte 的值重置为 0。 -
一旦用户输入一个字节值并点击
Convert
按钮,convertToGB()
函数就会被触发。 -
在
convertToGB()
函数中,我们使用 javascript 的document.getElementById("bytes_input").value
函数捕获用户在字节字段中输入的值,并将其捕获在bytesValue
变量。在下一步中,我们通过将bytesValue
除以(1000 * 1000 * 1000)
将该字节值转换为千兆字节。请记住,将字节值除以 1000 得到千字节值,再将其除以千返回兆字节值,而将兆字节值除以我们得到字节的千兆字节表示。 -
我们进行这些计算并将结果存储在
gbValue
变量中。在下一行中,我们通过使用document.getElementById("gbValue").innerHTML
设置label
值将gbValue
显示到 GUI 中。因此转换后的值显示在 HTML 中。
评论
- 本质上,我们需要一个字节的值超过七位才能获得有形的 Gigabyte 等价物。最小输出值为
0.01 GB
,转换为10000000 Bytes
。这意味着使用上面的代码,值大于10000000 Bytes
的字节将显示在输出中。小于该值的输出将为0 GB
。 - javascript 中变量可以容纳的位数是有限制的。JavaScript 有一个常量
Number.MAX_SAFE_INTEGER
,它定义了一个数字变量可以在 javascript 中保存的最大值,即9007199254740991
。因此,代码不会将任何字节数转换为千兆字节表示。我们可能会在转换过程中失去精度。我们不推荐它。 - 根据我们上面看到的代码,输出值显示四舍五入到两位小数的值。我们使用 JavaScript 的
Number.toFixed()
函数。根据行(bytesValue / (1000 * 1000 * 1000)).toFixed(2)
,输出将是 2 个小数位。如果我们以更好的精度显示千兆字节值,我们可以根据要求使用.toFixed(3)
或.toFixed(4)
调整代码。
转换为二进制基数
将字节值转换为千兆字节的更普遍理解的方法是使用二进制基数。我们大多数人都知道 1024
单位值。与十进制系统中除以 1000 不同,为了转换为更高的字节单位,在二进制数系统中,我们除以 1024 因子。
使用二进制基数转换的基数
在查看转换代码之前,让我们先看看二进制数字系统中的转换单位值。这里的基本原理将围绕 1024
(即 2 的 10
次方或 210)。
- 1 千字节 = 1024 字节
- 1 兆字节 = 1024 千字节
- 1 GB = 1024 兆字节
因此,在二进制基础系统中,1 GigaByte = 1024 * 1024 * 1024 Bytes。将字节数值转换为 Gigabyte 需要将其除以 1024 * 1024 * 1024
。
转换代码
以下代码将字节数转换为二进制系统中的千兆字节表示。
<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;
}
与使用十进制基数系统转换的代码相比,这里唯一的区别是我们使用 1024
因子而不是 1000
,这可以从 (bytesValue / (1024 * 1024 * 1024)).toFixed(2)
行中看出来。
评论
- 对于可输入的最大数字范围,同样的限制适用于该方法。大于
9007199254740991
的数字不能保证成功转换。 - 我们可以通过更改
(bytesValue / (1024 * 1024 * 1024)).toFixed(2)
行中toFixed()
函数的参数来调整精度。通常,在大多数情况下,小数点后最好使用 2 或 3 位数字。 - 两种转换的结果可能不同,十进制基数转换和二进制基数转换。两种方法之间的比较是无效的,因为它就像比较苹果和橘子一样。结果在各自的数字基础系统中。这意味着,在将字节转换为千兆字节的十进制基本系统中,结果将是十进制数字系统中的千兆字节表示,反之亦然。