30.04.2009, 11:08
Hallo,
ich habe einen TMCM-110 Motor der mir als reply einen 8-Byte-String liefert.
Aus diesem String möchte ich die letzten 4 Bytes nehmen, die Zahlen darin aneinanderketten und damit eine Hexzahl erhalten. Diese wird dann am ende in eine Integerzahl umgewandelt die die Position des Motors darstellt.
Nun ergibt sich folgendes Problem:
Der Motor steht an Position 32000. Wenn ich ihn aber frage wo er steht sagt er mir 2000. Wenn ich mir nun die Hexzahlen angucke sehe ich das Problem. Der Rückgabewert damit 32000 rauskommt, müsste 7D00 sein, ist jedoch 7D0 und somit 2000.
Das gleiche passiert wenn der Motor bei 257 steht. Die Rückgabe ist 17. 257 = 101 und 17 = 11 in Hex.
Es scheint also so dass mein Problem führende Nullen sind, die einfach weggelassen werden!
Die umwandlung vom String in Zahlen erfolgt über den Befehl "String to Byte Array". Und dabei werden meiner Meinung nach diese Nullen verschlampt, da dann ein Byte Array herauskommt in dem Integerzahlen stehen.
So die Frage ist nun wie kann ich es schaffen, dass die Zahlen die in jedem Byte im String stehen so übermittelt werden wie sie sind also mit allen führenden Nullen? Ich finde einfach keine Möglichkeit den ankommenden String in z.B. ein Byte-String-Array zu zerlegen (also jedes Byte in einen String in einem Array).
Ich hoffe jemand hat eine Idee.
ich habe einen TMCM-110 Motor der mir als reply einen 8-Byte-String liefert.
Aus diesem String möchte ich die letzten 4 Bytes nehmen, die Zahlen darin aneinanderketten und damit eine Hexzahl erhalten. Diese wird dann am ende in eine Integerzahl umgewandelt die die Position des Motors darstellt.
Nun ergibt sich folgendes Problem:
Der Motor steht an Position 32000. Wenn ich ihn aber frage wo er steht sagt er mir 2000. Wenn ich mir nun die Hexzahlen angucke sehe ich das Problem. Der Rückgabewert damit 32000 rauskommt, müsste 7D00 sein, ist jedoch 7D0 und somit 2000.
Das gleiche passiert wenn der Motor bei 257 steht. Die Rückgabe ist 17. 257 = 101 und 17 = 11 in Hex.
Es scheint also so dass mein Problem führende Nullen sind, die einfach weggelassen werden!
Die umwandlung vom String in Zahlen erfolgt über den Befehl "String to Byte Array". Und dabei werden meiner Meinung nach diese Nullen verschlampt, da dann ein Byte Array herauskommt in dem Integerzahlen stehen.
So die Frage ist nun wie kann ich es schaffen, dass die Zahlen die in jedem Byte im String stehen so übermittelt werden wie sie sind also mit allen führenden Nullen? Ich finde einfach keine Möglichkeit den ankommenden String in z.B. ein Byte-String-Array zu zerlegen (also jedes Byte in einen String in einem Array).
Ich hoffe jemand hat eine Idee.