Преобразование ASCII в шестнадцатеричный код в JavaScript

  1. Преобразование символа ASCII в шестнадцатеричный в JavaScript
  2. Преобразование строки ASCII в шестнадцатеричный эквивалент в JavaScript
  3. Преобразование шестнадцатеричного числа обратно в ASCII

Основное намерение разработки Американского стандартного кода обмена информацией (ASCII) заключалось в обмене данными между устройствами. ASCII - это кодовая таблица с понятными для человека символами, состоящая из каждого символа, сопоставленного с определенными числами (так называемые коды ASCII). Подобно двоичным системам счисления, используемым компьютерами, мы используем шестнадцатеричные системы счисления при передаче данных по каналу для безошибочной связи. ASCII - это удобочитаемый формат, который внутренне используется компьютерами по-разному. Давайте посмотрим, как мы можем преобразовать значение ASCII в шестнадцатеричное значение с помощью JavaScript.

Преобразование символа ASCII в шестнадцатеричный в JavaScript

Преобразование выполняется легко и не требует большого количества шагов в коде. Давайте посмотрим на код для преобразования символа ASCII в шестнадцатеричный.

window.onload = function () {
    convertASCIItoHex("A");
    convertASCIItoHex("n");
    convertASCIItoHex("!");
}

function convertASCIItoHex(asciiVal) {
    let asciiCode = asciiVal.charCodeAt(0);
    let hexValue = asciiCode.toString(16);
    console.log("0x" + hexValue);
}

Выход:

0x41
0x6e
0x21

В этом разделе мы имеем дело с преобразованием символа ASCII в его шестнадцатеричный эквивалент. У нас есть объяснение процесса преобразования следующим образом.

  • В функции javascript window.onload() мы вызываем функцию convertASCIItoHex() для преобразования значения ASCII в шестнадцатеричное в javascript. Функция window.onload() вызывается при загрузке страницы, поэтому функция запускается, как только страница загружается.
  • В функции convertASCIItoHex() мы передаем значение ASCII, которое необходимо преобразовать. asciiVal.charCodeAt(0) возвращает ASCII-код входного значения, переданного в функции convertASCIItoHex() в качестве параметра. Таблица ASCII содержит отображение в удобочитаемый формат букв и связанный с ними код. Выглядит это примерно так.
    ДЕСЯТИЧНЫЙ ШЕСТИГРАННЫЙ КОД Символ Описание
    65 41 год А Заглавная A
    66 42 B Заглавная B
    67 43 год C Заглавная C
    68 44 год D Заглавная D
    69 45 E Заглавная E
    70 46 F Заглавная F
    71 47 грамм Прописная G
    72 48 ЧАС Заглавная H
    73 49 я Прописные буквы I
    74 J Заглавная J

    Десятичный столбец представляет собой код для значения ASCII. Например, код ASCII для A - 65. Функция asciiVal.charCodeAt(0) возвращает значение ASCII asciiVal, которое содержит значение A. Следовательно, он возвращает 65. Мы сохраняем код ASCII в переменной asciiCode.

  • Как только мы получим код ASCII, соответствующий значению параметра, нашим следующим шагом будет преобразование его в шестнадцатеричное. Во фрагменте asciiCode.toString(16) функция .toString(16) возвращает шестнадцатеричное значение в виде строки. Мы храним шестнадцатеричное строковое значение в переменной hexValue.
  • На последнем шаге мы консолей шестнадцатеричный эквивалент переданного атрибута, используя функцию console.log() JavaScript.

Примечание

  • Может показаться странным добавлять ключевое слово 0x к преобразованному шестнадцатеричному значению. Это общий подход, применяемый в javascript для идентификации числа как шестнадцатеричного значения (дополнительные сведения см. В Документация MSDN). В целях вашего бизнеса мы можем избежать этого и следовать шестнадцатеричному значению, выведенному функцией .toString(16).

  • Функция toString(16) - это многоцелевая функция в javascript. Мы можем использовать его для преобразования в различные системы счисления. Нам нужно передать десятичную систему счисления или систему счисления в качестве параметра функции. Если мы ожидаем двоичного эквивалента кода ASCII, то функция toString(2) вернет двоичный эквивалент десятичного значения. Функция преобразует объект в строку перед возвратом двоичного значения. Следовательно, тип возврата .toString() - строка.

  • В приведенном выше коде учитывается только преобразование одного символа. Следовательно, если вы вводите строку типа convertASCIItoHex("HELLO"), функция вернет шестнадцатеричное значение первой буквы H. Это делает функция charCode(0) в asciiVal.charCodeAt(0).

Преобразование строки ASCII в шестнадцатеричный эквивалент в JavaScript

Более общие требования, которые мы получаем в нашей жизни, - это преобразование строки в целом в шестнадцатеричное эквивалентное значение, а не в символ. Следующая программа принимает строку в качестве ввода и возвращает строку в шестнадцатеричном эквиваленте для каждого символа в качестве вывода. Каждое шестнадцатеричное значение будет разделено пробелом ' ' для лучшего чтения и понимания.

window.onload = function () {
    convertASCIItoHex("Hello!");
    convertASCIItoHex("Good Morning World!!");
}

function convertASCIItoHex(asciiString) {
    let hex = '';
    let tempASCII, tempHex;
    asciiString.split('').map( i => {
        tempASCII = i.charCodeAt(0)
        tempHex = tempASCII.toString(16);
        hex = hex + tempHex + ' ';
    });
    hex = hex.trim();
    console.log(hex);
}

Выход:

48 65 6c 6c 6f 21
47 6f 6f 64 20 4d 6f 72 6e 69 6e 67 20 57 6f 72 6c 64 21 21

Здесь convertASCIItoHex() возвращает шестнадцатеричное строковое значение, соответствующее введенной строке. Он вернет значение типа String. Строка шестнадцатеричных кодов разделена пробелами для удобства чтения и ясности. Давайте посмотрим на шаги, которые мы сделали.

  • Как обсуждалось в предыдущем разделе, мы вызываем функцию javascript window.onload(), а затем вызываем функцию convertASCIItoHex("Hello!"), Передавая строку "Hello!" как параметр к нему.
  • В функции convertASCIItoHex() мы разбиваем входную строку на символы, чтобы упростить их обработку. Следовательно, на этом этапе строка "Hello!" Преобразуется в массив строк ["H", "e", "l", "l", "o", "!"].
  • Затем мы применяем преобразование ASCII в шестнадцатеричное к каждому элементу массива с помощью оператора javascript .map(). Он выполняет итерацию по каждому элементу и выполняет функцию для каждого из них. Мы передаем функцию как встроенную функцию или стрелочную функцию.
  • В функции мы используем charCodeAt(0) для получения ASCII-кода текущего элемента массива. Затем к объекту кода ASCII мы применяем toString(16) для преобразования значения ASCII в шестнадцатеричное основание. Затем мы помещаем шестнадцатеричное значение в hex массив, выходной массив. Обратите внимание, что мы используем пробел между последовательными преобразованиями для удобства чтения. Вы также можете использовать , или ; разделитель в соответствии с требованиями бизнеса.
  • С hex = hex + tempHex + ' ' мы добавляем пробел после каждого преобразования элемента. Следовательно, конечный результат будет иметь конечный пробел. Чтобы убрать это, мы используем функцию javascript .trim().
  • Наконец, преобразованный массив строк записывается в консоль с console.log(hex).

Преобразование шестнадцатеричного числа обратно в ASCII

Теперь, когда у нас есть готовые шестнадцатеричные значения, возникает вопрос, как подтвердить, что результат соответствует ожиданиям. Мы достигаем ядра функциональности с помощью функции javascript fromCharCode(ASCIICode), которая возвращает символ ASCII, соответствующий коду ASCII, переданному в параметре. Здесь мы можем использовать следующий код.

window.onload = function () {
    convertASCIItoHex("48 65 6c 6c 6f 21");
    convertASCIItoHex("47 6f 6f 64 20 4d 6f 72 6e 69 6e 67 20 57 6f 72 6c 64 21 21");
}
function convertHexToASCII(hexString) {
    let stringOut = '';
    hexString.split(' ').map( (i) => {
        tempAsciiCode = parseInt(i, 16);
        stringOut = stringOut + String.fromCharCode(tempAsciiCode);
    });
    console.log(stringOut);
}

Выход:

Hello!
Good Morning World!!

Здесь есть пара методов. parseInt(i, 16) преобразует ввод с основанием 16 в десятичное основание. Следовательно, с помощью этого метода мы получаем код ASCII для шестнадцатеричного значения. А String.fromCharCode(tempAsciiCode) принимает код ASCII, переданный в качестве параметра этой функции, и возвращает символ ASCII, соответствующий коду.

Замечания

  • Наиболее часто используемая удобочитаемая форма ASCII включает в себя алфавиты, числа и специальные символы. С помощью кодов javascript мы намерены охватить эти наборы символов. Мы не можем тестировать определенные коды ASCII в JavaScript, такие как ACK: символ подтверждения, ETX: символ конца текста и т. Д.
  • Строковая переменная JavaScript может содержать максимум 253-1 символов в соответствии со стандартами ES8. И это составляет примерно 512 МБ данных в Chrome и около гигабайта данных в Firefox. Следовательно, мы можем преобразовывать более длинные строковые значения, используя наш код.

Сопутствующая статья - JavaScript Hex

  • JavaScript преобразовывает код ASCII в шестнадцатеричный код