Rolf B: Binary String verarbeiten

Beitrag lesen

problematische Seite

Hallo pl,

Anmerkung: Die Funktion charCodeAt() liefert die Wertigkeiten beliebiger Bytes.

In deinem speziellen Fall ja. Im allgemeinen: Nein. Gegenbeispiel:

let a = "17€";
console.log(a.charCodeAt(2));
// -> 8364

Das ist kein Byte. Das ist ein Unicode-Zeichen. Unicode-Zeichen sind keine Bytes. Ein Unicodezeichen wird durch einen numerischen Wert im Intervall von 0 bis 0x10ffff repräsentiert. Je nach verwendetem Encoding wird daraus dann die eine oder andere Bytekette, wenn ein String aus Unicodezeichen in eine Bytesequenz umzuwandeln ist.

Und wie dedlfix schon erklärte: readAsBinaryString erzeugt KEINE Bytesequenz. this.result im onload Handler ist ein String, der 6 Unicodezeichen mit Codewerten im Beweich von 0 bis 255 enthält. Ob die Zeichen Bytes sind, oder Worte, oder Doppelworte, das ist ein Implementierungsdetail der JavaScript Engine. Aber vermutlich ist es NICHT ein Byte pro Zeichen, sondern 2.

Deswegen - wie ich schon schrieb - ist readAsBinaryString nicht das geeignete Werkzeug, um einem Blob byteweise zu verarbeiten. Du hättest besser meine Antwort bezüglich Uint8Array oder DataView gelesen, bevor Du deinen Artikel geschrieben hast.

Rolf

--
sumpsi - posui - clusi