mr.T schrieb:
> das Grundkonzept ist mir klar, was mir nicht klar ist, ist dieser
> teil.
1 | ((buffer[i]&(1<<DATA))>>DATA) // DATA ist 4
|
>
> Das Arry sieht ja so aus [0,1,1,0,1,0,0....
Es wird Bit Nummer 4 des jeweiligen Array-Bytes abgefragt und an Stelle
0 geschoben. Wenn Bit 4 in dem Byte gesetzt ist, ist das Ergebnis 1.
Wenn Bit 4 nicht gesetzt ist, ist das Ergebnis 0.
Man könnte es auch so schreiben:
1 | ((buffer[i] & (1<<DATA)) ? 1 : 0)
|
Oder:
1 | (!!(buffer[i] & (1<<DATA)))
|
Oder mit einem if:
1 | if (buffer[i] & (1<<DATA))
|
Das Ergebnis wird dann an Stelle 8 bis 31 in der Variable erg
gespeichert und wird am Schluss nochmal invertiert. An allen Stellen, an
denen im ursprünglichen Array-Byte Bit 4 gesetzt war, steht also im
"Ergebnisbit" eine 0, sonst 1.