-
Autor
Im Moment stehe ich grad auf dem Schlauch, wie ich aus einem String, welcher gemäß Shelly-API-Doc einfach ein Byte-Array ist, Integers (oder Numbers) kriege. Die üblichen verdächtigen JS-Funktionen auf String scheinen dafür zu fehlen. Was geht, ist eine HEX-Darstellung zu kriegen:
Code
function init() {
let testString="\x00190aZ\xFF"
for(i=0;i<testString.length;i++) {
let char = testString.charAt(i);
let num = btoh(char);
print("Character: '"+char+"' Number: '"+num+"'");
}
}
init();
Das ergibt:
Code
Character: '' Number: '00'
Character: '1' Number: '31'
Character: '9' Number: '39'
Character: '0' Number: '30'
Character: 'a' Number: '61'
Character: 'Z' Number: '5a'
Character: '�' Number: 'ff'
Das ist schon mal nicht schlecht, aber ich will ja gar keine HEX-String-Repräsentationen von meinen Zahlen, sondern echte JS-"Number"-Instanzen. Eine Funktion 'btoi' oder 'bton' oder dergleichen, welche eine Number als Rückgabewert hat. Aktuell bleibt alles immer ein String.
Und wie ich das nun geschrieben habe, ist mir doch noch eine krude Lösung eingefallen:
Code
function init() {
let testString="\x00190aZ\xFF"
for(i=0;i<testString.length;i++) {
let char = testString.charAt(i);
let num = btoh(char);
print("Character: '"+char+"' Number: '"+Number("0x"+num)+"'");
}
}
init();
gibt:
Code
Character: '' Number: '0'
Character: '1' Number: '49'
Character: '9' Number: '57'
Character: '0' Number: '48'
Character: 'a' Number: '97'
Character: 'Z' Number: '90'
Character: '�' Number: '255'
Also genau das, was ich will. Aber vielleicht kennt jemand noch eine elegantere Lösung?