Forum: Compiler & IDEs ein Byte-Informationen trennen


von ZachariasFoxx (Gast)


Lesenswert?

Hallo,

brauche folgende Lösung oder Hinweis

gegeben eine Variable, die über einen Eingangsport Information 
erhält(C++):

uint8_t Variable;          //reserviert mir 1 Byte
Variable = PORTB;          //einlesen der Information und in Variable
                           //speichern


z.B. enthält die Variable nun diese Information

11011010

Möchte nun die linken fünf Bits in eine andere Variable vom Typ 
"uint8_t",
die rechten drei auch.

hab es über "struct" versucht, funktionierte aber nicht so richtig

struct
{
    uint8_t Wert1:3;
    uint8_t Wert2:5;
} x;

Wie kriege ich nun die Bits dort rein?
Pease help me

von jay (Gast)


Lesenswert?

maskieren!

split1 = variable & 0xf8
split2 = variable & 0x07

von ZachariasFoxx (Gast)


Lesenswert?

Super danke,

aber die höherwertigen Bits (die linken fünf) sind in der neuen 
Variablen
in der selben Wertigkeit.

11011010

will ich splitten in

11011      und     010
(27 d)             (2 d)

und nicht

11011000
(216 d)

kann ich die Bits vielleicht noch verschieben?

von jay (Gast)


Lesenswert?

klar

split1 = (split1 >> 5);

mit << oder >> schiebste nach links oder rechts, dazu die zahl wieweit

von jopelabln (Gast)


Lesenswert?

split1 = (variable & 0xf8)>>3;

von ZachariasFoxx (Gast)


Lesenswert?

funktioniert!!!!

:-)

man, ich will dir nicht zeigen, was ich hier schon alles an Funktionen 
verbogen habe.

Danke dir..

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
Noch kein Account? Hier anmelden.