使用 JavaScript 将字节转换为千兆字节

Nithin Krishnan 2023年1月30日 2021年7月3日
  1. 转换为十进制基数
  2. 转换为二进制基数
使用 JavaScript 将字节转换为千兆字节

你有没有想过一个千兆字节有多少字节?千兆字节是常用的计量单位。千兆字节广泛用于我们日常电影的世界文件大小、硬盘容量,甚至笔记本电脑或手机中随机存取存储器的大小,我们都用千兆字节表示。在这些情况下,用于解决这些问题的所有单位都以千兆字节为单位。将字节转换为千兆字节需要一些数学知识。它类似于将米转换为公里。让我们看看如何在 JavaScript 中进行转换。有几种将字节转换为千兆字节的方法,如下所示。

  1. 以十进制为单位将千兆字节转换为字节
  2. 将千兆字节转换为二进制基字节

转换为十进制基数

每个人最常见的疑问是千字节值是 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 等于 19 个零。这就是转换计算的要点。

转换代码

我们现在已经了解了转换背后的计算和字节的各种单位。让我们快速浏览 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 位数字。
  • 两种转换的结果可能不同,十进制基数转换和二进制基数转换。两种方法之间的比较是无效的,因为它就像比较苹果和橘子一样。结果在各自的数字基础系统中。这意味着,在将字节转换为千兆字节的十进制基本系统中,结果将是十进制数字系统中的千兆字节表示,反之亦然。