Преобразование байтов в гигабайты с помощью JavaScript

  1. Преобразование в десятичное основание
  2. Преобразование в двоичную базу

Вы когда-нибудь задумывались, сколько байтов в гигабайте? Гигабайт - это обычно используемая единица измерения. Gigabyte широко используется в нашей повседневной жизни. Размер файла фильма, емкость жесткого диска, даже размер оперативной памяти в наших ноутбуках или мобильных телефонах - все это мы представляем в гигабайтах. Все единицы в этих случаях, используемые для их адресации, указаны в гигабайтах. Для преобразования байтов в гигабайты требуется немного математики. Это похоже на перевод метров в километры. Давайте посмотрим, как мы можем выполнить преобразование в JavaScript. Существует несколько подходов к преобразованию байтов в гигабайты, а именно:

  1. Преобразование гигабайт в байты в десятичной системе счисления.
  2. Преобразование гигабайт в байты в двоичной базе

Преобразование в десятичное основание

Чаще всего у всех возникает сомнение, что значение килобайта равно 1024 байтам или 1000 байтам. При поиске в Google мы получаем смешанные ответы. Но основная концепция проста. В десятичной системе счисления значение одного килобайта составляет 1000 байтов, тогда как в двоичной системе счисления значение составляет 1024 байта. Следовательно, параметры конверсии меняются в зависимости от этой идеологии.

Обоснование преобразования с использованием десятичной основы

Прежде чем мы начнем объяснение, мы рассмотрим основные единицы преобразования. Поскольку мы имеем дело с основанием десятичных чисел, мы будем использовать следующее обоснование преобразования.

  • 1 килобайт = 1000 байт
  • 1 мегабайт = 1000 килобайт
  • 1 гигабайт = 1000 мегабайт

Следовательно, 1 гигабайт = 1000 * 1000 * 1000 байт. Другими словами, один гигабайт эквивалентен 10 в степени 9 (10 ^ 9) байтов. Следовательно, простой поиск 1 ГБ в Google дает нам представление типа 1e+9. 1e+9 равно 1 с 9 нулями. В этом суть расчета конверсии.

Код конверсии

Теперь мы поняли расчет преобразований и различных единиц байтов. Давайте быстро рассмотрим код javascript, чтобы преобразовать число (количество байтов), данное в качестве входных данных. Код вернет для него значение, эквивалентное гигабайту, и отобразит его на экране.

<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 для захвата количества байтов от пользователя. В графическом интерфейсе есть кнопки Convert и Reset. Мы привязываем кнопку Convert к функции convertToGB(), которая конвертирует заданное значение байта в гигабайты. Кнопка Reset связана с функцией reset() для сброса значений, чтобы пользователь мог попробовать новые значения для преобразования.
  • Выполнение кода начинается с функции window.onload(). Функция window.onload() запускается первой при загрузке страницы. В этой функции мы сбрасываем значения для входного и выходного Gigabyte на 0.
  • Как только пользователь вводит значение байта и нажимает кнопку Конвертировать, запускается функция convertToGB().
  • В функции convertToGB() мы фиксируем значение, введенное пользователем в поле байта с помощью функции javascript document.getElementById("bytes_input").value, и фиксируем его в Переменная bytesValue. На следующем шаге мы преобразуем это значение байта в гигабайты, разделив bytesValue на (1000 * 1000 * 1000). Помните, что деление значения байта на 1000 дает нам значение в килобайтах, дальнейшее деление на тысячу возвращает значение в мегабайтах, а деление значения в мегабайтах дает нам представление в гигабайтах для байтов.
  • Мы производим эти вычисления и сохраняем результат в переменной gbValue. В следующей строке мы отображаем gbValue в графическом интерфейсе, устанавливая значение label с помощью document.getElementById ( gbValue ). InnerHTML. Следовательно, преобразованное значение отображается в HTML.

Замечания

  • По сути, нам потребуется байт, имеющий значение, состоящее более чем из семи цифр, чтобы получить для него ощутимый гигабайтный эквивалент. Минимальное выходное значение - 0,01 ГБ, что преобразуется в 10000000 байт. Это означает, что при использовании приведенного выше кода в выходных данных будет отображаться байт со значением, превышающим 10000000 байт. Для значений меньших, чем это будет, вывод будет 0 ГБ.
  • Существует ограничение на количество цифр, которые переменная может содержать в 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 гигабайт = 1024 мегабайта

Следовательно, в двоичной базовой системе 1 гигабайт = 1024 * 1024 * 1024 байта. Для преобразования числового значения байта в гигабайт потребуется разделить его на 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 не гарантирует успешного преобразования.
  • Мы можем настроить точность с помощью изменения параметра функции toFixed() в строке (bytesValue / (1024 * 1024 * 1024)).toFixed(2). Обычно в большинстве случаев предпочтительнее использовать 2 или 3 цифры после десятичной дроби.
  • Результаты могут отличаться как при преобразовании, так и при преобразовании десятичного основания и двоичного преобразования. Сравнение двух методов недопустимо, так как это будет похоже на сравнение яблока и апельсина. Результаты представлены в соответствующих системах счисления. Это означает, что в десятичной базовой системе преобразования байтов в гигабайты результатом будет гигабайтное представление в десятичной системе счисления и наоборот для двоичной системы счисления.