Mr.T schrieb:Jetzt habe ich mir da mal was übles zusammengebastelt, was funktioniert.
ACK
Zitat:Das kann aber nicht wirklich der gesunde Weg sein, oder?
Korrekt - das nicht ganz optimal.
Zitat:Aber das mit Hex-String zu Zahl funzt einfach net.
Was mache ich denn falsch?
Nicht so viel... Nur dass Hex-String zu Zahl in deinem Fall nicht funktioniert - nicht funktionieren kann.
Das hatten wir hier schon öfter und es wird auch nicht das letzte mal sein, dass es Verwechslungen und Missverständnisse gibt zwischen der Darstellung mittels druckbarer ASCII Zeichen, der Zahl selbst und der Abbildung der Zahl im Speicher. Falls es einmal nicht zu Missverständnissen kommen würde, dann sorgen Big- und Little-Endian ggf. dafür, dass wieder etwas nicht so ist, wie es erwartet wurde.
Eine Zahl, wie in deinem Beispiel Dezimal 55936 oder Hex 0xDA80 kann mittels zweier Bytes gespeichert werden. Bei Big-Endian wird das höherwertige Byte zuerst gespeichert 0xDA gefolgt von 0x80. Bei Little-Endian wird das niederwertige Byte zuerst gespeichert 0x80 gefolgt von 0xDA.
Wird die Zahl lesbar dargestellt, dann erfolgt diese Darstellung mittels druckbarer ASCII Zeichen als "DA80" (im Speicher stehen die Bytes 0x44 0x41 0x38 0x30). Nur diese Form der Darstellung kann z.B. mittels der Funktion "Hexadecimal String to Number" in einen Integer umgewandelt werden.
In deinem Fall kommt die Zahl so wie sie ist und zu meiner Freude auch im Big-Endian Format. Die Umwandlung geht ganz einfach mittels "Type Cast" (Palette Advanced, Data Manipulation) in einen U16 (unsigned 16 Bit Integer).