Übergabe von variabeln für binärcode.

toxic

New member
Hallo

folgendes problem:

iwenn ich die variabeln hardcode z.b. hc = [31,2D,32] setzt er mir im binärcode die zeichen so wie es soll.
Im binärcode kann ich sie auch auslesen und sehe 1-2.

wenn ich nun den text convertieren möchte:

let hc = toHex('1-2');

function toHex(s) {
let h = ''
for (let i = s.length - 1; i >= 0; i--)
h = ''+ s.charCodeAt(i).toString(16) + h
return h

}

bekomme ich statt den hardoded variabeln nur 03.01.02.0D.03.02. wo aber 31,2d,32 erwated werden.

vieleicht hat einer ein tip wie ich es umsetzen kann

grüße
 
Hallo,

deine Funktion gibt einen zusammenhängenden String wie 312d32 zurück. Benötigt wird aber vermutlich ein Array mit einzelnen Bytewerten.

Javascript:
function toHexBytes(text) {
return Array.from(text, char => char.charCodeAt(0));
}

const hc = toHexBytes('1-2');

console.log(hc);
// [49, 45, 50]

JavaScript zeigt die Werte in der Konsole dezimal an. Sie entsprechen aber genau diesen Hexwerten:

Javascript:
49 === 0x31; // true
45 === 0x2d; // true
50 === 0x32; // true

Wenn du die Hexwerte als Strings benötigst:

Javascript:
function toHex(text) {
return Array.from(text, char =>
char.charCodeAt(0).toString(16).padStart(2, '0')
);
}

const hc = toHex('1-2');

console.log(hc);
// ["31", "2d", "32"]

Wenn echte Bytewerte benötigt werden, ist diese kurze Variante ausreichend:

Javascript:
const hc = Array.from('1-2', char => char.charCodeAt(0));

Das Ergebnis entspricht:

Javascript:
const hc = [0x31, 0x2d, 0x32];

Dein ursprünglicher Code erzeugt nur den String 312d32. Wird dieser anschließend Zeichen für Zeichen verarbeitet, werden 3, 1, 2, d, 3, 2 einzeln behandelt. Daher entstehen die unerwarteten Werte.

bye
mo
 
Zurück
Oben