Forum: Compiler & IDEs Wie splitte ich ein Byte richtig auf?


von Dominik (Gast)


Lesenswert?

Hallo,
bräuchte eure Hilfe, zur gunde licgt volgender code in c:

void checkbyte(char c)
{
    if (c & 0b11110000 == hw_GetTWIAddr() )
    {

        printf_P(PSTR("Funktioniert"));
        printf_P(PSTR("%c"), c);
    }
    else printf_P(PSTR("Läuft nicht, falsche Adresse"));
}


die Funktion soll das byte was vom Uart des contrllers kommt (char c) 
aufsplitten und mit einer adresse vergleichen. dabei sollen nur die 
ersten 4 bit verglichen werden. If abfrage...



vielen dank schonmal im vorraus

von Karl H. (kbuchegg)


Lesenswert?

Operatorenreihenfolge

> void checkbyte(char c)
> {
>     if ( ( c & 0b11110000 ) == hw_GetTWIAddr() )

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Abgesehen davon, daß C keine binäre Schreibweise à la 0b11110000 kennt*, 
und vielleicht noch 'n Klammerpaar gesetzt werden sollte, wenn man nicht 
nachsehen will, ob & in der Operatorenrangfolge vor == kommt, macht das 
doch in etwas das, was da beschrieben wird.

Und wobei brauchst Du jetzt Hilfe? Rechtschreibung? Fragen Stellen?



*) es gibt ein paar Compiler, die das am Standard vorbei machen, aber 
ratsam ist das dennoch nicht.

von Dominik (Gast)


Lesenswert?

Ja vielen dank für die schnelle Antwort, werde es gleich mal 
ausprobieren ;-)


Gruß
Dominik

von Timo P (Gast)


Lesenswert?

Welche Schreibweise kann man denn allgemein nutzen, wenn man einen Wert 
auf binäre Weise zuordnen will?

Glaube damals hieß der Pic-Compiler CC5x und ich meine der konnte das 
mal. Nun programmiere ich hauptsächlich AVRs. mit WINAVR, der kann das 
nicht.
Manchmal ist es übersichtlicher, ähnliches zu schreiben, wie: 
0b.1110.000 also 0xE0.

von Timo P (Gast)


Lesenswert?

@dominic: welchen Compiler nutzt du? Funzt die binäre Zuweisung?

von Timo P (Gast)


Lesenswert?

hab meine Frage gerade selbst beantwortet. Ich könnte ein Makro 
schreiben, so dass auf eine Fkt. zugreift. Diese Fkt bekommt die einen 
Zeiger auf die Bitfolge und tätigt entsprechende Zuweisungen alla asci-> 
hex und var = hex

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.