Hallo

"if ((wert & 0x00000001) == 0x00000001) bits32 = 1;"
Das niederwertigste Bit heißt 32? Das würde ich überdenken.

Nicht berauschend kompakt, dafür aber noch halbwegs übersichtlich geht's mit vordefinierten Arrays mit den Wertigkeiten:

uint32_t wertigkeit[32]={1,2,4,8,16,32, .... ,2^30,2^31} // *gg

Das kann man dann in einer Schleife abklappern:

for(i=0; i<32; i++) if(wert & wertigkeit[31-i]) senden(1); else senden(0); // MSB zuerst senden.

... sendet so das MSB zuerst. Empfangen könnte man dann etwa so:

aktion=0;
for(i=0; i<8; i++) if(wert & wertigkeit[31-i]) aktion+=wertigkeit[31-i]; // Bits 24-31

empf=0;
for(i=0; i<24; i++) if(wert & wertigkeit[23-i]) empf+=wertigkeit[23-i]; // Bits 0-23

Ich bin nicht sicher ob das so auf Anhieb funktioniert wegen der MSB/LSBs. Zusätzlich weiß ich auch nicht ob ich das Thema nicht völlig verfehlt habe.

Code:
Programmcode
erzeugt die Codebox.

Gruß

mic