Bits einzeln ausgeben^
-
Hallo zusammen!
Ich möchte aus einem unsigned char-Array die einzelnen Bits ausgeben, also:
unsigned char feld[...]; // Init. ... // Ausgabe: for(int i = 0; i < sizeof(feld); i++) cout << checkBit(feld, i) << ", ";
Die Funktion checkBit gibt den Wert des i-ten Bits (0 oder 1) zurück.
Dabei werden aber doch nicht "alle" Bits ausgegeben, oder?
Wie müsste die korrekte Implementierung aussehen?DANKE & VLG !
-
Hallo einzelner
feld&1<<i, oder so ähnlich
-
Kommt drauf an, wie checkBit implementiert ist.
-
Sorry, die Implementierung hätte ich noch dazu schreiben sollen. Also die sieht wie folgt aus:
bool checkBit(unsigned char* feld, unsigned int nummer) { return (static_cast<bool>(feld[nummer / 8] & (1 << (7 - nummer % 8)))); }
Schonmal danke, für weitere Antworten im voraus!
-
*push*
Noch jemand ne Idee?
-
Naja
sizeof(feld)
gibt dir nicht die Anzahl der Bits, sonderen die Anzahl der Bytes zurück. Also sollte Deine Schleifenbedingung eher so aussehen:
for(int i = 0; i < sizeof(feld)*8; i++)
Gennerell solltest Du aber vorsichtig mit sizeof bei Arrays sein. Bei einem dynamisch erzeugtem Array würde das nicht funktionieren. Besser, Du merkst Dir die Anzahl der Bits auf andere Weise.
DJohn
-