Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

c++ zapis i odczyt pliku binarnego.

madej1234 04 Paź 2009 15:28 5314 6
  • #1 04 Paź 2009 15:28
    madej1234
    Poziom 10  

    Witam wszystkich.

    Jestem początkującym programistą w c++, ale postawiłem sobie wysoko poprzeczkę.
    Wymyśliłem program który, będzie szyfrował znaki w pliku na podstawie tablicy która, ma 7 bitów.
    Szukałem wszędzie informacji, lecz znalazłem tylko pola bitowe które niezbyt rozumiem.

    Moje pytanie brzmi, czy można odczytać plik tak aby każdy bit znalazł się w jednej komórce tablicy np. char ?

    0 6
  • #2 04 Paź 2009 15:49
    kuuczoo
    Poziom 26  

    Bezpośrednio nie. Najłatwiej czytać pojedyncze znaki i rozbijać je na bity.

    0
  • #3 04 Paź 2009 15:58
    madej1234
    Poziom 10  

    Ok, a jaka jest procedura tego procesu ? Czy da się te bity zapisac do tablicy ?

    0
  • #4 04 Paź 2009 16:10
    kuuczoo
    Poziom 26  

    Nie miałem nigdy potrzeby czytania pliku binarnego więc jak to dokładnie jest to ci nie powiem. Nie powinno być jednak kłopotu ze znalezieniem opisu w sieci. Pamiętam że w procedurze czytało się określony blok danych z wybranego strumienia. W twoim przypadku tym blokiem może być 1bajt. Następnie rozbijasz go na bity (przesuwanie i maskowanie) i wstawiasz w wybrane miejsce w tablicy.

    0
  • #5 04 Paź 2009 16:20
    madej1234
    Poziom 10  

    Dzieki! poszukam.

    1
  • Pomocny post
    #6 04 Paź 2009 20:21
    Dr.Vee
    VIP Zasłużony dla elektroda

    Code:
    #include <ifstream>
    
    #include <iostream>

    int main()
    {
        std::ifstream file("plik.bin", ios::binary);

        std::cout << "Zawartosc pliku binarnie:\n";

        unsigned char c;
        unsigned bytes = 0;
        while (file >> c)
        {
            bytes += 1;
            for (unsigned i = 0x80; i != 0; i >>= 1)
            {
                std::cout << (c & i) ? '1' : '0';
            }
            std::cout << "\n";
        }

        std::cout << "Koniec pliku po " << bytes << " bajtach\n";
    }


    Pozdrawiam,
    Dr.Vee

    0
  • #7 04 Paź 2009 23:20
    madej1234
    Poziom 10  

    Wielkie dzieki Dr.Vee!

    0