1248 Stimmen

Umwandlung von Zeichen in ASCII-Code in JavaScript

Wie kann ich mit JavaScript ein Zeichen in seinen ASCII-Code umwandeln?

Zum Beispiel:

erhalten 10 von " \n ".

2voto

maioman Punkte 16481

Zur Unterstützung aller UTF-16 (auch nicht-BMP/ergänzende Zeichen ) von ES6 die string.codePointAt() Methode verfügbar ist;

Diese Methode ist eine verbesserte Version von charCodeAt, die nur Unicode-Codepunkte < 65536 unterstützt ( 2 16 - ein einzelnes 16bit ) .

2voto

str.charCodeAt(index)

Verwendung von charCodeAt() Das folgende Beispiel gibt 65 zurück, den Unicode-Wert für A .

'ABC'.charCodeAt(0) // gibt 65 zurück

1voto

simlev Punkte 839

Ergänzend zu den Kommentaren von Álvaro González und andere, charCodeAt o codePointAt sind sehr gut geeignet, wenn Sie nur mit den 128 ursprünglichen ASCII-Zeichen arbeiten (Codes 0 bis 127). Außerhalb dieses Bereichs, der Code ist abhängig vom Zeichensatz und Sie brauchen eine Zeichensatzkonvertierung vor der Berechnung, wenn das Ergebnis sinnvoll sein soll.

Nehmen wir das Euro-Zeichen als Beispiel: '€'.codePointAt(0) gibt zurück. 8364 was weit außerhalb des Bereichs 0-127 liegt und sich auf den UTF-16 (oder UTF-8 ) Zeichensatz.

Ich habe ein Visual Basic-Programm portiert und festgestellt, dass es die Asc Funktion, um den Zeichencode zu erhalten. Von ihrem Standpunkt aus würde sie natürlich den Zeichencode in der Fenster-1252 Zeichensatz. Um sicher zu sein, dass ich dieselbe Zahl erhalte, muss ich den Zeichensatz konvertieren und dann den Code berechnen.

Ziemlich einfach z.B. in Python: ord('€'.encode('Windows-1252')) .
Um dasselbe in Javascript zu erreichen, musste ich jedoch auf Puffer und eine Konvertierungsbibliothek :

iconv = require('iconv-lite');
buf = iconv.encode("€", 'win1252');
buf.forEach(console.log);

0voto

menomanabdulla Punkte 137

Für diejenigen, die eine Summe aller ASCII-Codes für eine Zeichenkette mit Durchschnittswert erhalten möchten:

const ASCIIAverage = (str) =>Math.floor(str.split('').map(item => item.charCodeAt(0)).reduce((prev,next) => prev+next)/str.length)

console.log(ASCIIAverage('Hello World!'))

0voto

tejas_spy007 Punkte 310
charCodeAt(0);

Der obige Code funktioniert in den meisten Fällen, allerdings gibt es einen Haken bei der Arbeit mit Wörtern, um eine Rangfolge auf der Grundlage des obigen Codes zu finden. Zum Beispiel würde aa eine Rangfolge von 97+97 = 194 ergeben (tatsächlich wäre 1+1 = 2), während w 119 ergeben würde (tatsächlich wäre es 23), was aa > w macht. Um dies zu beheben, subtrahieren Sie 96 vom obigen Ergebnis, um die Positionierung bei 1 zu beginnen.

charCodeAt(0) - 96;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X