Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pobieranie z pliku kolejnych bitów

Ostatnio zmodyfikowano 2011-05-22 17:50
Autor Wiadomość
Katruf
Temat założony przez niniejszego użytkownika
Pobieranie z pliku kolejnych bitów
» 2011-05-15 14:17:02
Witam,
chcę napisać program który pakuje kilka plików(bez względu na format)do jednego pliku(bez kompresji) a potem prawidłowo je odtwarza. Do tego jest potrzebne pobieranie z pliku kolejnych bitów. Czy istnieje jakiś łatwy sposób aby tego dokonać?
 
P-33038
absflg
» 2011-05-15 14:28:17
Nie bitów, a bajtów.
Metoda get() strumienia.
P-33039
Katruf
Temat założony przez niniejszego użytkownika
» 2011-05-15 14:58:14
a czy możesz podać przykład??
Ja także potrzebuje tego bajta na bity rozłożyć do algorytmu szyfrowania
P-33040
Mrowqa
» 2011-05-15 15:23:29
Najlepiej się rozkłada dzięki unii i polom bitowym:
C/C++
struct rozlozone
{
    unsigned int a: 1,
    b: 1,
    //...
    h: 1;
}
union rozklad
{
    char nasz_bajt;
    rozlozone nasze_bity;
}
// korzystanie
rozklad x;
x.nasz_bajt = strumien.get();
int /*bool?*/ bit_nr_3 = x.nasze_bity.c;
To wyżej to taka mała rada, by się nie przemęczyć. Jeśli te zapisy są dla ciebie za długie, to unia może być anonimowa ;)

Pozdrawiam,
Mrowqa
P-33042
absflg
» 2011-05-15 22:31:30
Tak po prawdzie to korzystanie z pól o nazwach a..h jest niewygodne, bo w wielu miejscach będzie wymagane stworzenie długich instrukcji warunkowych. Moja rada: użyć przesunięcia i maskowania bitów.
Przykład:
C/C++
char get_byte = stream.get();

//edycja takiego charu. N to numer bitu, LICZONY OD ZERA.
short N; //jeszcze coś do tego przypisz ;)

//Odczyt N-tego bitu i zapis do zmiennej
bool get_bit =( get_byte >> N ) & 1;

//Ustawienie N-tego bitu na 1
get_byte |= 1 << N;

//Ustawienie N-tego bitu na 0
get_byte &= ~( 1 << N );
Taki zapis pozwala odwoływać się do bitów po ich numerze.
P-33044
Katruf
Temat założony przez niniejszego użytkownika
» 2011-05-18 19:54:04
Dzięki wielkie właśnie takiego sposobu poszukiwałem :))
P-33141
Katruf
Temat założony przez niniejszego użytkownika
» 2011-05-20 19:23:19
Pojawił się jeszcze jeden problem jak kopiuję plik tekstowy albo bitmapę to wszystko gra ale jak chcę skopiować plik *.exe to np zamiast 4MB kopiuje mi 2KB i przerywa w czym może leżeć przyczyna ( do wykrywania  czy plik się skończył używam funkcji .eof()  )
P-33237
Mrowqa
» 2011-05-21 14:19:16
Do kopiowania plików możesz użyć
CopyFile()
 czy jak to się tam zwało :P
Klik :P

Pozdrawiam,
Mrowqa
P-33249
« 1 » 2
  Strona 1 z 2 Następna strona