Convertir ASCII en hexadécimal en JavaScript
- Convertir un caractère ASCII en hexadécimal en JavaScript
- Conversion d’une chaîne d’ASCII en équivalent hexadécimal en JavaScript
- Convertir l’hexadécimal en ASCII
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 fonctionconvertASCIItoHex()
pour traduire la valeur ASCII en hexadécimal en javascript. La fonctionwindow.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 fonctionconvertASCIItoHex()
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 ré 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 fonctionasciiVal.charCodeAt(0)
renvoie la valeur ASCII deasciiVal
qui contient la valeurA
. Il renvoie donc 65. On stocke le code ASCII dans la variableasciiCode
. -
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 variablehexValue
. -
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 fonctiontoString(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 fonctioncharCode(0)
dansasciiVal.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 fonctionconvertASCIItoHex("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 letoString(16)
pour convertir la valeur ASCII en base hexadécimale. Ensuite, nous poussons la valeur hexadécimale dans le tableauhex
, 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.