Hi Ich habe 7 kleine Zählerwerte von denen keiner größer als 100 ist, wenn ich ihn übertragen will. Bis dahin können sie aber schnell auch mal 20000 werden, darum sind sie als int definiert. Zur Übertragung ggf. per CAN wäre es aber sehr viel einfacher, wenn ich aus den int chars machen könnte. Beim CAN würden dann alle in eine einzige Nachricht passen. Aber wie wandelt man ein 2byte int in ein 1byte char um, ohne das der Compiler meckert?
Wenn Du gewährleisten kannst, daß die resultierenden Werte nicht größer als 255 werden, geht das: int a; unsigned char b; b = (unsigned char) a; Nennt sich "casten"......
1 | unsigned int var = 0xABCD; |
2 | |
3 | unsigned char upper = 0x00; |
4 | unsigned char lower = 0x00; |
5 | |
6 | upper = var / 0x100; //ist jetzt 0xAB |
7 | lower = var % 0x100; //ist jetzt 0xCD |
pumpkin
oh ja, mit unsigned char scheint es tatsächlich zu funktionieren. Danke.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.