Преобразование HEX в текст в JavaScript
Доброго времени суток! При работе с данными часто бывает так, что они приходят не в том формате/кодировке в которой мы их ожидаем. Поэтому, перед тем как начать работать с такими данными нам приходиться их преобразовать к нужному нам формату. Например, мне в одном из проектов клиента пришлось работать с текстовыми данными, которые должны были быть в формате ASCII, но в действительности оказались вшестнадцатеричном представлении (HEX). Для работы с этими данными их пришлось преобразовать из шестнадцатеричного формата в обычный понятный человеку текстовый формат с помощью следующей функции:
// конвертируем hex-строку в ascii-строку
function hex2text(hex_string)
{
const hex = hex_string.toString(); // конвертируем в строку
let out = '';
// i += 2 - так в шестнадцатеричном виде число представлено двумя символами
for (let i = 0; i < hex.length; i += 2)
{
// код символа в шестнадцетиричном представлении
const charCode = parseInt(hex.substr(i, 2), 16);
out += String.fromCharCode(charCode);
}
return out;
}
Функция ниже делает преобразование обратное предыдущей функции, т.е. из текста в HEX:
function text2hex(text)
{
let char;
let out = "";
// проходимся циклом по всей строке и берем по одному символу
for(let i = 0; i < text.length; i++)
{
char = text.charCodeAt(i); // получаем код символа по индексу i
char = char.toString(16); // преобразуем число в шестнадцатеричное представление
out += char;
}
return out.toUpperCase(); // возвращаем строку в верхнем регистре
}
Таким образом, вот так просто можно преобразовать строку из одного представления (hex) в другое (text) в JavaScript.