Hallo
Es geht hier um video-Dateien ... also um einen Video decoder ... da braucht man den BIT-Stream ... wäre nicht besonders vorteilhaft, wenn das Video-File 8 mal so groß wird ... ;-) ... abgesehen davon muss ich mich ja an den Standard halten und der will es halt bitweise ...
Das ist ja ein nettes Thema fuer Einsteiger (-; Wie gelesen: Bytes sind die kleinste Einheit. Es gab auch glaub schon Loesungsvorschlaege, wie Du aus den Bytes Bits machen kannst. Mein Vorschlag noch dazu (vielleicht gab es den auch schon): ================================================================= #include <iostream> using namespace std; bool byteToBit( unsigned char value, unsigned char &result ) { static unsigned char andFlag = 0x01; result = ( value & andFlag ) != 0 ? 0x01 : 0x00; andFlag = andFlag << 1; if ( andFlag == 0 ) { // Eine ganze Runde (8 shifts) gemacht? andFlag = 0x01; return true; // true = neues Byte noetig } else { return false; // false = Weiter mit altem Byte } } int main() { unsigned char data[] = { 0x01, 0xF0, 0x34 }; // Dummy-Data unsigned char currentByte; unsigned char currentBit; bool needNewByte; for ( int i = 0; i < 3; i++ ) { currentByte = data[i]; // Neues Byte holen. !!File-In!! do { needNewByte = byteToBit( currentByte, currentBit ); if ( currentBit ) cout << "1"; else cout << "0"; } while ( !needNewByte ); cout << " "; } } =============================================================== Die Funktion byteToBit() beginnt beim niedrigsten Bit. Willst Du mit dem hoechsten beginnen, dann muss Du als Anfangswert 0x80 statt 0x01 verwenden und zum Schiften >> statt <<. Ausgabe: 10000000 00001111 00101100 Das ist vom Aufruf her recht komfortabel. Es wirkt etwas umstaendlich, aber dafuer hat es ein stream-artiges Verhalten - Du kannst wirklich Bit fuer Bit lesen. Die Performance kann ich nicht abschaetzen. Bye -- 1 Bodo Kaelberer 123 http://www.webkind.de/ 3 4 "A button I have made must be pushed." (ip)