Bitstrom verändern

  • Hallo,
    ich brauche mal etwas Hilfe:
    Es geht darum, dass ich 24 Bytes bits in einem int array data[6] habe.
    Nun muss ich die gesamte Bitfolge untersuchen und falls Bit i z.B. eine "1" ist,
    dieses Bit durch 7 andere Bits (1110010) ersetzen; falls Bit i+1 z.B. eine "0" ist
    durch die 7 Bits (0001101) ersetzen, usw. Im Endeffekt möchte ich die ersetzten Bits
    hintereinander in einem Buffer (int array buffer[42]) stehen haben.
    Ich spreize also die 24 original byte auf 168 byte (Faktor 7).
    Der Funktionsaufruf sollte folgendermaßen aussehen:

    Code
    inline void copyBits (int *destination, int dstOffset, int *source, int srcOffset, int srcLenght);


    Kann mir jmd. helfen?

    Danke im Voraus.
    PS: Die datentypen können auch verändert werden.

  • Benutz doch einfach den >> operator und den & operator um auf die bits zuzugreifen..
    So kannst du z.B. das letzte bit eines Wertes herausfinden:

    int bit = ((var >> 0) & 1);// bit wird dann 1 oder halt 0 ;)
    //0 kannst du auch durch eine höhere Zahl ersetzen um auf die davorliegenden bits zuzugreifen

    da gibt es auch noch die bitset Klasse kannste dir ja mal auf http://www.cplusplus.com/reference/stl/bitset/
    angucken.

    Dann kannste dir die Funktion eigentlich selber schreiben :P

    mfg KrokantKrockete

    Einmal editiert, zuletzt von KrokantKrockete (15. November 2008 um 19:53)