Hallo Klaus1,
das ist Node.js, ja? Dessen Buffer hat eine readUInt8 Methode. Das scheint mir der richtige Weg zu sein, um einen Wert auszulesen, ihn zu ändern und zurückzuschreiben, wenn man „einen Buffer nachträglich ändern“ will. Wenn Du eine geänderte Kopie des Buffers erzeugen willst, solltest Du einen Buffer gleicher Größe anlegen und die Werte mit readUInt8 und writeUInt8 kopieren.
for (let i=0; i<buffer.length; i++) {
let w = buffer.readUInt8(i);
buffer.writeUInt8(w+1, i);
}
oder
for (let i=0; i<buffer.length; i++)
buffer.writeUInt8(buffer.readUInt8(i)+1, i);
oder
for (let i=0; i<buffer.length; i++)
buffer[i]++;
ich habe kein Node da, aber der hier sagt, dass der Buffer die Uint8Array Semantik übernimmt. Also müsste das gehen.
Ansonsten solltest Du keine undokumentierten Node-Aufrufe verwenden. In der Doku steht, dass der bei writeUInt8 übergebene Wert ein Integer sein soll. Offenbar ist Node so nett und übersetzt den String, den Du ihm einwirfst. Aber du kannst auch direkt buffer.writeUInt8(0xA0, 0)
aufrufen. Oder buffer[0] = 0xA0
;
Rolf
sumpsi - posui - clusi