Converter ASCII em hexadecimal em JavaScript

Nithin Krishnan 12 outubro 2023
  1. Converter um caractere ASCII em hexadecimal em JavaScript
  2. Convertendo uma string de ASCII em equivalente hexadecimal em JavaScript
  3. Converter hexadecimal de volta para ASCII
Converter ASCII em hexadecimal em JavaScript

A intenção principal de desenvolver o Código Padrão Americano para Intercâmbio de Informações (ASCII) era a troca de dados entre dispositivos. ASCII é uma tabela de códigos que possui caracteres legíveis por humanos e consiste em cada caractere mapeado para números específicos (os chamados códigos ASCII). Como os sistemas de números básicos binários usados ​​por computadores, usamos sistemas de números hexadecimais durante a transmissão de dados por um canal para comunicação livre de erros. ASCII é um formato legível por humanos, que é usado internamente de forma diferente por computadores. Vamos ver como podemos converter um valor ASCII em um valor hexadecimal com JavaScript.

Converter um caractere ASCII em hexadecimal em JavaScript

A conversão é fácil e não requer muitas etapas no código. Vejamos o código para converter um caractere ASCII em hexadecimal.

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);
}

Resultado:

0x41
0x6e
0x21

Nesta seção, estamos lidando com a conversão de um caractere ASCII em seu equivalente hexadecimal. Temos o processo de conversão explicado a seguir.

  • Na função window.onload() do javascript, chamamos a função convertASCIItoHex() para traduzir o valor ASCII para hexadecimal em javascript. A função window.onload() é chamada no carregamento da página para que seja executada assim que a página for carregada.
  • Na função convertASCIItoHex(), passamos o valor ASCII que precisa ser convertido. asciiVal.charCodeAt(0) retorna o código ASCII do valor de entrada passado na função convertASCIItoHex() como parâmetro. A tabela ASCII contém um mapeamento para o formato de letra legível por humanos e um código associado a eles. Parece o seguinte.
    DECIMAL HEXCODE Símbolo Descrição
    65 41 UMA A maiúsculo
    66 42 B B maiúsculo
    67 43 C C maiúsculo
    68 44 D D maiúsculo
    69 45 E E maiúsculo
    70 46 F F maiúsculo
    71 47 G G maiúsculo
    72 48 H H maiúsculo
    73 49 eu I maiúsculo
    74 4A J J maiúsculo
    A coluna decimal representa o código para o valor ASCII. Por exemplo, o código ASCII para A é 65. A função asciiVal.charCodeAt(0) retorna o valor ASCII de asciiVal que contém o valor A. Portanto, ele retorna 65. Armazenamos o código ASCII na variável asciiCode.
  • Depois de obter o código ASCII correspondente ao valor do parâmetro, nosso próximo passo é convertê-lo em hexadecimal. No fragmento asciiCode.toString(16), a função .toString(16) retorna o valor hexadecimal como uma string. Armazenamos o valor da string hexadecimal na variável hexValue.
  • Na etapa final, consolamos o equivalente hexadecimal do atributo passado usando a função console.log() do JavaScript.

Observação

  • Pode parecer estranho acrescentar a palavra-chave 0x ao valor hexadecimal convertido. É uma abordagem comum seguida em javascript para identificar o número como um valor hexadecimal (consulte Documentos do MSDN para obter mais detalhes). Para o seu propósito comercial, podemos evitá-lo e seguir a saída do valor hexadecimal da função .toString(16).

  • A função toString(16) é uma função polivalente em javascript. Podemos usá-lo para converter para diferentes sistemas de base numérica. Precisamos passar a base decimal ou raiz como um parâmetro para a função. Se aguardarmos um equivalente binário do código ASCII, a função toString(2) retornará o equivalente binário do valor decimal. A função fará o typecast do objeto em uma string antes de retornar o valor binário. E, portanto, o tipo de retorno de .toString() é string.

  • O código acima considera apenas uma conversão de caractere. Portanto, se você fornecer uma string como entrada como convertASCIItoHex("HELLO"), a função retornará o valor hexadecimal da primeira letra H. Isso é feito pela função charCode(0) em asciiVal.charCodeAt(0).

Convertendo uma string de ASCII em equivalente hexadecimal em JavaScript

Os requisitos mais comuns que recebemos em nossas vidas são converter uma string como um todo no valor hexadecimal equivalente em vez de um caractere. O programa a seguir recebe uma string como entrada e retorna uma string hexadecimal equivalente para cada caractere como saída. Cada valor hexadecimal será separado por ' ' um espaço para melhor legibilidade e compreensão.

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);
}

Ouput:

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

Aqui, convertASCIItoHex() retorna um valor de string hexadecimal correspondente à entrada de string fornecida. Ele retornará um valor do tipo String. A sequência de códigos hexadecimais é separada por espaços para facilitar a leitura e clareza. Vejamos as etapas que seguimos.

  • Conforme discutido na seção anterior, chamamos a função window.onload() do javascript e, em seguida, chamamos a função convertASCIItoHex("Hello!") Passando uma string "Hello!" como um parâmetro para ele.
  • Na função convertASCIItoHex(), dividimos a string de entrada em caracteres para facilitar o processamento. Portanto, nesta fase, a string "Hello!" Se converte em ["H", "e", "l", "l", "o", "!"], um array de string.
  • Em seguida, aplicamos “a conversão ASCII em hexadecimal” em cada elemento do array com o operador .map() de javascript. Ele itera por meio de cada elemento e executa uma função em cada um deles. Passamos a função como uma função embutida ou função de seta.
  • Na função, usamos charCodeAt(0) para obter o código ASCII do elemento do array atual. Em seguida, no objeto de código ASCII, aplicamos toString(16) para converter o valor ASCII em uma base hexadecimal. Em seguida, colocamos o valor hexadecimal no array hex, o array de saída. Observe que usamos um espaço entre as conversões consecutivas para fins de legibilidade. Você também pode preferir usar , ou ; separador conforme exigido pelas necessidades do negócio.
  • Com hex = hex + tempHex + ' ' acrescentamos um espaço após cada conversão de elemento. Portanto, o resultado final terá um espaço à direita. Para removê-lo, usamos a função .trim() do javascript.
  • Finalmente, a matriz de string convertida é registrada no console com o console.log(hex).

Converter hexadecimal de volta para ASCII

Agora, como temos os valores hexadecimais prontos, a questão que surge é como podemos confirmar se a saída é a esperada. Alcançamos o núcleo da funcionalidade com a função fromCharCode(ASCIICode) do javascript que retorna o caractere ASCII correspondente ao código ASCII passado no parâmetro. Aqui, podemos usar o seguinte código.

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);
}

Resultado:

Hello!
Good Morning World!!

Alguns métodos fazem a mágica aqui. parseInt(i, 16) converte uma entrada de base 16 em base decimal. Portanto, com este método, obtemos o código ASCII para o valor hexadecimal. E o String.fromCharCode(tempAsciiCode) pega o código ASCII passado como parâmetro para esta função e retorna o caractere ASCII correspondente ao código.

Observações

  • A forma legível de ASCII mais comumente usada inclui alfabetos, números e caracteres especiais. Com os códigos javascript, pretendemos cobrir esses conjuntos de caracteres. Não podemos testar determinados códigos ASCII em JavaScript, como ACK: caractere de reconhecimento, ETX: caractere de fim de texto, etc.
  • A variável de string JavaScript pode conter um comprimento máximo de 253-1 caracteres de acordo com os padrões ES8. E isso equivale a cerca de 512 MB de dados no Chrome e cerca de um Gigabyte de dados no Firefox. Portanto, podemos converter valores de string mais longos usando nosso código.