Convertir ASCII en hexadécimal en JavaScript

Nithin Krishnan 12 octobre 2023
  1. Convertir un caractère ASCII en hexadécimal en JavaScript
  2. Conversion d’une chaîne d’ASCII en équivalent hexadécimal en JavaScript
  3. Convertir l’hexadécimal en ASCII
Convertir ASCII en hexadécimal en JavaScript

L’intention principale de développer le code standard américain pour l’échange d’informations (ASCII) était d’échanger des données entre les appareils. ASCII est une table de codes qui contient des caractères lisibles par l’homme et qui se compose de chaque caractère associé à des nombres spécifiques (les codes dits ASCII). Comme les systèmes de nombres de base binaires utilisés par les ordinateurs, nous utilisons des systèmes de nombres hexadécimaux tout en transmettant des données sur un canal pour une communication sans erreur. L’ASCII est un format lisible par l’homme, qui est utilisé différemment en interne par les ordinateurs. Voyons comment nous pouvons convertir une valeur ASCII en valeur hexadécimale avec JavaScript.

Convertir un caractère ASCII en hexadécimal en JavaScript

La conversion est facile et ne nécessite pas beaucoup d’étapes dans le code. Regardons le code pour convertir un caractère ASCII en hexadécimal.

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

Production:

0x41
0x6e
0x21

Dans cette section, nous traitons de la conversion d’un caractère ASCII en son équivalent hexadécimal. Nous avons le processus de conversion expliqué comme suit.

  • Dans la fonction window.onload() de javascript, nous appelons la fonction convertASCIItoHex() pour traduire la valeur ASCII en hexadécimal en javascript. La fonction window.onload() est appelée au chargement de la page afin que la fonction soit exécutée dès le chargement de la page.
  • Dans la fonction convertASCIItoHex(), on passe la valeur ASCII à convertir. asciiVal.charCodeAt(0) renvoie le code ASCII de la valeur d’entrée passée dans la fonction convertASCIItoHex() en paramètre. La table ASCII contient un mappage au format de lettre lisible par l’homme et un code qui lui est associé. Cela ressemble à ce qui suit.
    DÉCIMAL CODE HEXAGONAL symbole La description
    65 41 UNE Majuscule A
    66 42 B Majuscule B
    67 43 C C majuscule
    68 44 Majuscule D
    69 45 E E majuscule
    70 46 F Majuscule F
    71 47 g Majuscule G
    72 48 H Majuscule H
    73 49 je I majuscule
    74 4A J Majuscule J
    La colonne décimale représente le code de la valeur ASCII. Par exemple, le code ASCII pour A est 65. La fonction asciiVal.charCodeAt(0) renvoie la valeur ASCII de asciiVal qui contient la valeur A. Il renvoie donc 65. On stocke le code ASCII dans la variable asciiCode.
  • Une fois que nous obtenons le code ASCII correspondant à la valeur du paramètre, notre prochaine étape consiste à le convertir en hexadécimal. Dans le snippet asciiCode.toString(16), la fonction .toString(16) renvoie la valeur hexadécimale sous forme de chaîne. Nous stockons la valeur de la chaîne hexadécimale dans la variable hexValue.
  • Dans la dernière étape, on console l’équivalent hexadécimal de l’attribut passé à l’aide de la fonction console.log() de JavaScript.

Noter

  • Il peut sembler étrange d’ajouter le mot-clé 0x à la valeur hexadécimale convertie. C’est une approche courante suivie en javascript pour identifier le nombre en tant que valeur hexadécimale (Reportez-vous à MSDN Docs pour plus de détails). Pour vos besoins commerciaux, nous pouvons l’éviter et suivre la valeur hexadécimale sortie de la fonction .toString(16).

  • La fonction toString(16) est une fonction polyvalente en javascript. Nous pouvons l’utiliser pour convertir en différents systèmes de base de nombres. Nous devons passer la base décimale ou la base comme paramètre à la fonction. Si nous attendons avec impatience un équivalent binaire du code ASCII, alors la fonction toString(2) renverra l’équivalent binaire de la valeur décimale. La fonction transtypera l’objet en une chaîne avant de renvoyer la valeur binaire. Et par conséquent, le type de retour de .toString() est une chaîne.

  • Le code ci-dessus ne considère qu’une seule conversion de caractère. Par conséquent, si vous donnez une chaîne en entrée comme convertASCIItoHex("HELLO"), la fonction renverra la valeur hexadécimale de la première lettre “H”. Elle se fait par la fonction charCode(0) dans asciiVal.charCodeAt(0).

Conversion d’une chaîne d’ASCII en équivalent hexadécimal en JavaScript

Les exigences les plus courantes que nous obtenons dans nos vies consistent à convertir une chaîne dans son ensemble en valeur équivalente hexadécimale plutôt qu’en caractère. Le programme suivant prend une chaîne en entrée et renvoie une chaîne d’équivalent hexadécimal pour chaque caractère en sortie. Chaque valeur hexadécimale sera séparée par un espace ' ' pour une meilleure lisibilité et compréhension.

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

Sortie :

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

Ici, le convertASCIItoHex() renvoie une valeur de chaîne hexadécimale correspondant à l’entrée de chaîne fournie. Il renverra une valeur de type String. La chaîne de codes hexadécimaux est séparée par des espaces pour plus de lisibilité et de clarté. Regardons les étapes que nous avons suivies.

  • Comme discuté dans la section précédente, nous appelons la fonction window.onload() de javascript puis appelons la fonction convertASCIItoHex("Hello!") en passant une chaîne "Hello!" en tant que paramètre.
  • Dans la fonction convertASCIItoHex(), nous avons divisé la chaîne d’entrée en caractères pour faciliter leur traitement. Ainsi, à cette phase, la chaîne "Hello!" est convertie en ["H", "e", "l", "l", "o", "!"], un tableau de chaînes.
  • Ensuite, nous appliquons “la conversion ASCII en hexadécimal” sur chaque élément du tableau avec l’opérateur .map() de javascript. Il parcourt chaque élément et exécute une fonction sur chacun d’eux. Nous passons la fonction en tant que fonction en ligne ou fonction de flèche.
  • Dans la fonction, nous utilisons charCodeAt(0) pour obtenir le code ASCII de l’élément courant du tableau. Ensuite, sur l’objet code ASCII, nous appliquons le toString(16) pour convertir la valeur ASCII en base hexadécimale. Ensuite, nous poussons la valeur hexadécimale dans le tableau hex, le tableau de sortie. Notez que nous utilisons un espace entre les conversions consécutives pour des raisons de lisibilité. Vous pouvez également préférer utiliser , ou ; séparateur tel qu’exigé par les besoins de l’entreprise.
  • Avec hex = hex + tempHex + ' ' nous ajoutons un espace après chaque conversion d’élément. Par conséquent, le résultat final aura un espace de fuite. Pour supprimer cela, nous utilisons la fonction .trim() de javascript.
  • Enfin, le tableau de chaînes converti est enregistré dans la console avec le console.log(hex).

Convertir l’hexadécimal en ASCII

Maintenant que nous avons les valeurs hexadécimales prêtes, la question qui se pose est de savoir comment confirmer que la sortie est comme prévu. Nous réalisons le cœur de la fonctionnalité avec la fonction fromCharCode(ASCIICode) de javascript qui renvoie le caractère ASCII correspondant au code ASCII passé en paramètre. Ici, nous pouvons utiliser le code suivant.

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

Production:

Hello!
Good Morning World!!

Quelques méthodes font la magie ici. parseInt(i, 16) convertit une entrée de base 16 en base décimale. Par conséquent, avec cette méthode, nous obtenons le code ASCII pour la valeur hexadécimale. Et le String.fromCharCode(tempAsciiCode) prend le code ASCII passé en paramètre à cette fonction et retourne le caractère ASCII correspondant au code.

Remarques

  • La forme lisible par l’homme la plus couramment utilisée de l’ASCII comprend les alphabets, les chiffres et les caractères spéciaux. Avec les codes javascript, nous avons l’intention de couvrir ces jeux de caractères. On ne peut pas tester certains codes ASCII en JavaScript, comme le ACK : caractère d’accusé de réception, ETX : caractère de fin de texte, etc.
  • La variable de chaîne JavaScript peut contenir une longueur maximale de “2^53-1” caractères selon les normes ES8. Et cela représente environ 512 Mo de données dans Chrome et environ un gigaoctet de données dans Firefox. Par conséquent, nous pouvons convertir des valeurs de chaîne plus longues à l’aide de notre code.