cykliczne wstawianie zer do ciagu bitow??

0

Witajacie! Mam pytanie:

-mam ciag r*k bitow generowanych pseudolosowo;
-co kazde r bitow mam wstawic 8 zer i uzyskac ciag nr 2 o dlugosci (r+8)*k botow (potrzebne do kodowania splotowego)

Jak to zrobic ?? :))

0

skorzystaj z bitset w STL ułatwi ci to prace

0

bitset tu nie pasuje, bo nie może zmieniać swojego rozmiaru. lepszy by był:

std::vector<bool> a;

jednak należy pamiętać, że ten szablon dla argumentu bool ma szczególną specjalizację, w której 8 bitów zapisywana jest w jednym bajcie. więc nie można pozyskać adresu do pojedynczej wartości.

0

Tablica bitowa

mój artykuł, klasa operująca na pojedynczych bitach w tablicy, klasa udaje, że jest tablicą bitów :> taki wynalazek, może ci pomoże

EDIT: jeżeli musisz także zmieniać rozmiary tablicy jak vector, dopisz sobie to tej klasy metodę relokujacą i po problemie

0

Nie babrałbym się w bitserty. 8 bitów to bajt. Czyli każdy bajt pseudolosowych bitów może zamienić się na wielokrotność bajta. Dajmy na to chcesz wstawić 8 zerowych bitów za n-tym bitem danych.

  1. Przepisujesz n / 8 bajtów danych, odczytujesz następny bajt 'B'
  2. obliczasz miejsce podziału bajtu 'B'
    ile1 = n % 8;
    ile2 = 8 - ile1;
  3. dopisujesz do ciągu wynikowego pierwsza część uzupełnioną o zera
    (((unsigned char) B) << ile1) >> ile1
  4. dopisujesz do ciągu wynikowego drugą część uzupełnioną o zera
    (((unsigned char) B) >> ile2) << ile2
  5. Jeśli kolejna ósemka zerowych bitów ma być wstawiona w ten sam bajt (następne_n - n < ile2) wtedy wyciągasz z powrotem ostatni dopisany do ciągu wynikowego bajt i używasz go jako bajtu B

1 użytkowników online, w tym zalogowanych: 0, gości: 1