Converti ASCII in esadecimale in JavaScript

Nithin Krishnan 12 ottobre 2023
  1. Converti un carattere ASCII in esadecimale in JavaScript
  2. Conversione di una stringa di ASCII in equivalente esadecimale in JavaScript
  3. Converti esadecimale in ASCII
Converti ASCII in esadecimale in JavaScript

L’intenzione principale di sviluppare l’American Standard Code for Information Interchange (ASCII) era lo scambio di dati tra i dispositivi. ASCII è una tabella di codici che ha caratteri leggibili dall’uomo ed è composta da ciascun carattere mappato su numeri specifici (i cosiddetti codici ASCII). Come i sistemi di numeri di base binari utilizzati dai computer, utilizziamo sistemi di numeri esadecimali durante la trasmissione di dati su un canale per una comunicazione senza errori. ASCII è un formato leggibile dall’uomo, utilizzato internamente in modo diverso dai computer. Vediamo come possiamo convertire un valore ASCII in un valore esadecimale con JavaScript.

Converti un carattere ASCII in esadecimale in JavaScript

La conversione è facile e non richiede molti passaggi nel codice. Esaminiamo il codice per convertire un carattere ASCII in esadecimale.

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

Produzione:

0x41
0x6e
0x21

In questa sezione, ci occuperemo della conversione di un carattere ASCII nell’equivalente esadecimale per esso. Abbiamo il processo di conversione spiegato come segue.

  • Nella funzione window.onload() di javascript, chiamiamo la funzione convertASCIItoHex() per tradurre il valore ASCII in esadecimale in javascript. La funzione window.onload() viene chiamata al caricamento della pagina in modo che la funzione venga eseguita non appena la pagina viene caricata.
  • Nella funzione convertASCIItoHex(), passiamo il valore ASCII che deve essere convertito. asciiVal.charCodeAt(0) restituisce il codice ASCII del valore di input passato nella funzione convertASCIItoHex() come parametro. La tabella ASCII contiene una mappatura al formato lettera leggibile dall’uomo e un codice ad essi associato. Sembra il seguente.
    DECIMALE HEXCODE Simbolo Descrizione
    65 41 UN A maiuscola
    66 42 B Si maiuscolo
    67 43 C Do maiuscolo
    68 44 D Re maiuscolo
    69 45 E Mi maiuscolo
    70 46 F Fa maiuscolo
    71 47 G Sol maiuscolo
    72 48 H H maiuscola
    73 49 io I maiuscola
    74 4A J J . maiuscolo
    La colonna decimale rappresenta il codice per il valore ASCII. Ad esempio, il codice ASCII per A è 65. La funzione asciiVal.charCodeAt(0) restituisce il valore ASCII di asciiVal che contiene il valore A. Quindi restituisce 65. Memorizziamo il codice ASCII nella variabile asciiCode.
  • Una volta ottenuto il codice ASCII corrispondente al valore del parametro, il nostro prossimo passo è convertirlo in esadecimale. Nello snippet asciiCode.toString(16), la funzione .toString(16) restituisce il valore esadecimale come stringa. Memorizziamo il valore della stringa esadecimale nella variabile hexValue.
  • Nel passaggio finale, consoliamo l’equivalente esadecimale dell’attributo passato utilizzando la funzione console.log() di JavaScript.

Nota

  • Può sembrare strano aggiungere la parola chiave 0x al valore esadecimale convertito. È un approccio comune seguito in javascript per identificare il numero come valore esadecimale (fare riferimento a MSDN Docs per maggiori dettagli). Per il tuo scopo aziendale, possiamo evitarlo e seguire l’output del valore esadecimale dalla funzione .toString(16).

  • La funzione toString(16) è una funzione multiuso in javascript. Possiamo usarlo per convertire in diversi sistemi di base numerica. Dobbiamo passare la base decimale o la radice come parametro alla funzione. Se aspettiamo un equivalente binario del codice ASCII, la funzione toString(2) restituirà l’equivalente binario del valore decimale. La funzione convertirà l’oggetto in una stringa prima di restituire il valore binario. E quindi, il tipo restituito di .toString() è stringa.

  • Il codice precedente considera una sola conversione di caratteri. Quindi se si fornisce una stringa come input come convertASCIItoHex("HELLO"), la funzione restituirà il valore esadecimale della prima lettera “H”. Viene eseguito dalla funzione charCode(0) in asciiVal.charCodeAt(0).

Conversione di una stringa di ASCII in equivalente esadecimale in JavaScript

I requisiti più comuni che otteniamo nelle nostre vite sono convertire una stringa nel suo insieme nel valore esadecimale equivalente piuttosto che in un carattere. Il seguente programma accetta una stringa come input e restituisce una stringa di equivalente esadecimale per ogni carattere come output. Ogni valore esadecimale sarà separato da ' ' uno spazio per una migliore leggibilità e comprensione.

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

Uscita:

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

Qui il convertASCIItoHex() restituisce un valore di stringa esadecimale corrispondente all’input di stringa fornito. Restituirà un valore di tipo Stringa. La stringa di codici esadecimali è separata da spazi per leggibilità e chiarezza. Vediamo i passaggi che abbiamo seguito.

  • Come discusso nella sezione precedente, chiamiamo la funzione window.onload() di javascript e poi chiamiamo la funzione convertASCIItoHex("Hello!") passando una stringa "Hello!" come suo parametro.
  • Nella funzione convertASCIItoHex(), dividiamo la stringa di input in caratteri per facilitarne l’elaborazione. Quindi, in questa fase, la stringa "Hello!" si converte in ["H", "e", "l", "l", "o", "!"], un array di stringhe.
  • Successivamente, applichiamo “la conversione da ASCII a esadecimale” su ciascun elemento dell’array con l’operatore .map() di javascript. Itera su ogni elemento ed esegue una funzione su ciascuno di essi. Passiamo la funzione come funzione in linea o funzione freccia.
  • Nella funzione, usiamo charCodeAt(0) per ottenere il codice ASCII dell’elemento dell’array corrente. Quindi, sull’oggetto codice ASCII, applichiamo il toString(16) per convertire il valore ASCII in una base esadecimale. Quindi inseriamo il valore esadecimale nell’array hex, l’array di output. Nota che usiamo uno spazio tra la conversione consecutiva per motivi di leggibilità. Puoi anche preferire , o ; separatore come richiesto dalle esigenze aziendali.
  • Con hex = hex + tempHex + ' ' aggiungiamo uno spazio dopo ogni conversione di elemento. Quindi, il risultato finale avrà uno spazio finale. Per rimuoverlo, usiamo la funzione .trim() di javascript.
  • Infine, l’array di stringhe convertito viene registrato nella console con console.log(hex).

Converti esadecimale in ASCII

Ora, poiché abbiamo i valori esadecimali pronti, la domanda che sorge è come confermiamo che l’output è come previsto. Raggiungiamo il nucleo della funzionalità con la funzione fromCharCode(ASCIICode) di javascript che restituisce il carattere ASCII corrispondente al codice ASCII passato nel parametro. Qui, possiamo usare il seguente codice.

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

Produzione:

Hello!
Good Morning World!!

Un paio di metodi fanno la magia qui. parseInt(i, 16) converte un input di base 16 in base decimale. Quindi, con questo metodo, otteniamo il codice ASCII per il valore esadecimale. E il String.fromCharCode(tempAsciiCode) prende il codice ASCII passato come parametro a questa funzione e restituisce il carattere ASCII corrispondente al codice.

Osservazioni

  • La forma leggibile più comunemente usata di ASCII include alfabeti, numeri e caratteri speciali. Con i codici javascript, intendiamo coprire questi set di caratteri. Non possiamo testare determinati codici ASCII in JavaScript, come ACK: carattere di riconoscimento, ETX: carattere di fine testo, ecc.
  • La variabile stringa JavaScript può contenere una lunghezza massima di 253-1 caratteri secondo gli standard ES8. E ciò equivale a circa 512 MB di dati in Chrome e circa un Gigabyte di dati in Firefox. Quindi, possiamo convertire valori di stringa più lunghi usando il nostro codice.