Input = low;
Input >>=8;
Input =high;
So sollte es gehen.
Hi,
ich möchte eine 16 bit variable in zwei 8 bit varialblen aufteilen. Kann mir jemand sagen wie ich 16bit in high und low bit aufteilen kann.
MfG Martin
Input = low;
Input >>=8;
Input =high;
So sollte es gehen.
und ich wollte es über die Bitoperatoren lösen
byte = 16 bit variable
low = byte & 0xFF00
high = byte & 0x00FF >>8
Paul Valéry (1871-1945), frz. DichterDas, was immer von jedermann und überall als richtig akzeptiert wurde, ist mit ziemlicher Gewißheit das Falsche.
Danke für die hilfe, so funktioniert es jetzt.
MfG Martin
ich würds mit union machen
so könntest ne variable initialisieren wenn du bereits ne uint16 hast dann einfach castenCode:typdef union { uint8_t byte[2]; uint16_t word; } byte_t byte_t variable; variable.word = 0xAF; variable.byte[0] = 0xF; variable.byte[1] = 0xA;
und dann wie oben, ähnlich wie bei ner struct auf die elemente zugreifen.Code:(byte_t *) variable16bit;
ps: ich bin mir jetzt nicht sicher mit byte[0] ob der das LSB nimmt denke aber schon.
Wobei es etwas missverständlich ist, die "byte_t" zu nennen, weil ja insgesamt 16 Bits drinne sind.Zitat von bL1nK
Code:#include <inttypes.h> typdef union { uint8_t asByte[2]; uint16_t asWord; } data16_t; data16_t variable; variable.asWord = 0x1234; variable.asByte[0] = 0x34; variable.asByte[1] = 0x12;Das ist architekturabhängig, s.g. Endianess. Für AVR (bzw. avr-gcc) ist das der Fall. Wenn man also Kommunikation macht, muss man da schon aufpassen.Zitat von bL1nK
Disclaimer: none. Sue me.
Lesezeichen