Konvertieren Sie ASCII in Hexadezimal in JavaScript

Nithin Krishnan 12 Oktober 2023
  1. Konvertieren Sie ein ASCII-Zeichen in ein Hexadezimalzeichen in JavaScript
  2. Konvertieren eines ASCII-Strings in ein hexadezimales Äquivalent in JavaScript
  3. Konvertieren Sie Hexadezimal zurück in ASCII
Konvertieren Sie ASCII in Hexadezimal in JavaScript

Die Hauptabsicht bei der Entwicklung des American Standard Code for Information Interchange (ASCII) war der Datenaustausch zwischen Geräten. ASCII ist eine Codetabelle, die von Menschen lesbare Zeichen enthält und aus jedem Zeichen besteht, das bestimmten Zahlen zugeordnet ist (den sogenannten ASCII-Codes). Wie die von Computern verwendeten binären Basiszahlensysteme verwenden wir hexadezimale Zahlensysteme, während wir Daten über einen Kanal für eine fehlerfreie Kommunikation übertragen. ASCII ist ein von Menschen lesbares Format, das intern von Computern unterschiedlich verwendet wird. Sehen wir uns an, wie wir mit JavaScript einen ASCII-Wert in einen Hex-Wert umwandeln können.

Konvertieren Sie ein ASCII-Zeichen in ein Hexadezimalzeichen in JavaScript

Die Konvertierung ist einfach und erfordert nicht viele Schritte im Code. Schauen wir uns den Code zum Konvertieren eines ASCII-Zeichens in ein Hexadezimalzeichen an.

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

Ausgabe:

0x41
0x6e
0x21

In diesem Abschnitt beschäftigen wir uns mit der Umwandlung eines ASCII-Zeichens in das hexadezimale Äquivalent dazu. Wir haben den Konvertierungsprozess wie folgt erklärt.

  • In der Funktion window.onload() von JavaScript rufen wir die Funktion convertASCIItoHex() auf, um den ASCII-Wert in Hexadezimal in JavaScript zu übersetzen. Die Funktion window.onload() wird beim Laden der Seite aufgerufen, damit die Funktion ausgeführt wird, sobald die Seite geladen wird.
  • In der Funktion convertASCIItoHex() übergeben wir den zu konvertierenden ASCII-Wert. asciiVal.charCodeAt(0) liefert als Parameter den ASCII-Code des in der Funktion convertASCIItoHex() übergebenen Eingabewertes. Die ASCII-Tabelle enthält eine Zuordnung zum menschenlesbaren Buchstabenformat und einen damit verbundenen Code. Es sieht wie folgt aus.
    DEZIMAL HEXCODE Symbol Beschreibung
    65 41 EIN Großbuchstaben A
    66 42 B Großbuchstaben B
    67 43 C Großbuchstaben C
    68 44 D Großbuchstaben D
    69 45 E Großbuchstaben E
    70 46 F Großbuchstaben F
    71 47 G Großbuchstaben G
    72 48 H Großbuchstaben H
    73 49 ich Großbuchstaben I
    74 4A J Großbuchstaben J
    Die Dezimalspalte repräsentiert den Code für den ASCII-Wert. Der ASCII-Code für A ist beispielsweise 65. Die Funktion asciiVal.charCodeAt(0) gibt den ASCII-Wert von asciiVal zurück, der den Wert A enthält. Daher gibt es 65 zurück. Den ASCII-Code speichern wir in der Variablen asciiCode.
  • Sobald wir den dem Parameterwert entsprechenden ASCII-Code erhalten haben, besteht unser nächster Schritt darin, ihn in hexadezimal umzuwandeln. Im Snippet asciiCode.toString(16) liefert die Funktion .toString(16) den hexadezimalen Wert als String zurück. Den hexadezimalen Stringwert speichern wir in der Variablen hexValue.
  • Im letzten Schritt trösten wir das hexadezimale Äquivalent des übergebenen Attributs mit der JavaScript-Funktion console.log().

Hinweis

  • Es mag seltsam erscheinen, das Schlüsselwort 0x an den konvertierten Hexadezimalwert anzuhängen. Es ist ein üblicher Ansatz in JavaScript, die Zahl als hexadezimalen Wert zu identifizieren (weitere Informationen finden Sie in MSDN Docs). Für Ihre geschäftlichen Zwecke können wir dies vermeiden und der hexadezimalen Wertausgabe der Funktion .toString(16) folgen.

  • Die Funktion toString(16) ist eine Mehrzweckfunktion in JavaScript. Wir können es verwenden, um in verschiedene Zahlenbasissysteme umzuwandeln. Wir müssen die Dezimalbasis oder das Radix als Parameter an die Funktion übergeben. Wenn wir uns auf ein binäres Äquivalent des ASCII-Codes freuen, dann gibt die Funktion toString(2) das binäre Äquivalent des Dezimalwerts zurück. Die Funktion wandelt das Objekt in einen String um, bevor der Binärwert zurückgegeben wird. Daher ist der Rückgabetyp von .toString() string.

  • Der obige Code berücksichtigt nur eine Zeichenkonvertierung. Wenn Sie also als Eingabe einen String wie convertASCIItoHex("HELLO") angeben, gibt die Funktion den hexadezimalen Wert des ersten Buchstabens “H” zurück. Dies geschieht durch die Funktion charCode(0) in asciiVal.charCodeAt(0).

Konvertieren eines ASCII-Strings in ein hexadezimales Äquivalent in JavaScript

Die häufigsten Anforderungen, die wir in unserem Leben stellen, sind die Umwandlung einer Zeichenkette als Ganzes in den hexadezimalen Äquivalentwert und nicht in ein Zeichen. Das folgende Programm nimmt eine Zeichenkette als Eingabe und gibt eine Zeichenkette mit hexadezimaler Entsprechung für jedes Zeichen als Ausgabe zurück. Jeder Hex-Wert wird zur besseren Lesbarkeit und zum besseren Verständnis durch ' ' getrennt.

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

Ausgabe:

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

Hier liefert convertASCIItoHex() einen hexadezimalen String-Wert, der der bereitgestellten String-Eingabe entspricht. Es wird ein Wert vom Typ String zurückgegeben. Die Zeichenkette der Hex-Codes ist aus Gründen der Lesbarkeit und Klarheit durch Leerzeichen getrennt. Schauen wir uns die Schritte an, die wir befolgt haben.

  • Wie im vorherigen Abschnitt besprochen, rufen wir die Funktion window.onload() von JavaScript auf und rufen dann die Funktion convertASCIItoHex("Hello!") auf, indem wir einen String "Hello!" übergeben. als Parameter dazu.
  • In der Funktion convertASCIItoHex() teilen wir den Eingabestring in Zeichen auf, um sie leichter verarbeiten zu können. Daher wird in dieser Phase der String "Hello!" in ["H", "e", "l", "l", "o", "!"], ein String-Array, umgewandelt.
  • Als nächstes wenden wir mit dem JavaScript-Operator .map() auf jedes Element des Arrays “die Umwandlung von ASCII in Hex” an. Es durchläuft jedes Element und führt eine Funktion auf jedem von ihnen aus. Wir übergeben die Funktion als Inline-Funktion oder Pfeilfunktion.
  • In der Funktion verwenden wir charCodeAt(0), um den ASCII-Code des aktuellen Array-Elements zu erhalten. Dann wenden wir auf das ASCII-Code-Objekt den toString(16) an, um den ASCII-Wert in eine hexadezimale Basis umzuwandeln. Dann schieben wir den hexadezimalen Wert in das Array hex, das Ausgabearray. Beachten Sie, dass wir aus Gründen der Lesbarkeit ein Leerzeichen zwischen den aufeinanderfolgenden Konvertierungen verwenden. Sie können auch , oder ; verwenden. Trennzeichen, wie es von den Geschäftsanforderungen verlangt wird.
  • Mit hex = hex + tempHex + ' ' fügen wir nach jeder Elementumwandlung ein Leerzeichen an. Daher wird das Endergebnis ein abschließendes Leerzeichen haben. Um das zu entfernen, verwenden wir die Funktion .trim() von JavaScript.
  • Abschließend wird das konvertierte String-Array mit dem console.log(hex) in die Konsole protokolliert.

Konvertieren Sie Hexadezimal zurück in ASCII

Jetzt, da wir die hexadezimalen Werte bereit haben, stellt sich die Frage, wie wir bestätigen können, dass die Ausgabe wie erwartet ist. Den Kern der Funktionalität erreichen wir mit der Funktion fromCharCode(ASCIICode) von JavaScript, die das ASCII-Zeichen zurückliefert, das dem im Parameter übergebenen ASCII-Code entspricht. Hier können wir den folgenden Code verwenden.

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

Ausgabe:

Hello!
Good Morning World!!

Ein paar Methoden machen hier die Magie. parseInt(i, 16) wandelt eine Eingabe der Basis 16 in eine Dezimalbasis um. Daher erhalten wir mit dieser Methode den ASCII-Code für den Hex-Wert. Und String.fromCharCode(tempAsciiCode) nimmt den dieser Funktion als Parameter übergebenen ASCII-Code und gibt das dem Code entsprechende ASCII-Zeichen zurück.

Bemerkungen

  • Die am häufigsten verwendete von Menschen lesbare Form von ASCII umfasst Alphabete, Zahlen und Sonderzeichen. Mit den JavaScript-Codes wollen wir diese Zeichensätze abdecken. Bestimmte ASCII-Codes in JavaScript können wir nicht testen, wie das ACK: Acknowledge-Zeichen, ETX: End of Text-Zeichen usw.
  • JavaScript-String-Variable kann eine Länge von maximal 253-1 Zeichen gemäß ES8-Standards enthalten. Und das entspricht ungefähr 512 MB Daten in Chrome und rund einem Gigabyte Daten in Firefox. Daher können wir mit unserem Code längere Zeichenkettenwerte konvertieren.