Wie splitte ich ein Byte richtig auf?

Gast #1568927
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
Persönliche Seite #1568929
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.
Gast #1571900
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.
Gast #1571922
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren