Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <string>
- #include <iostream>
- #include <fstream>
- using namespace std;
- int crc(string nazwa_pliku_wejsciowego, ifstream &plik_odczyt)
- {
- unsigned char bajt;
- bool wynik;
- unsigned long wielomian = 0x04c11db7;
- unsigned long liczba = 0x00000000;
- unsigned long zmienna = 0;
- unsigned long najstarszy_bit = 0;
- plik_odczyt.open(nazwa_pliku_wejsciowego.c_str(), ios::binary);
- while(true)
- {
- bajt = plik_odczyt.get();
- wynik = plik_odczyt.good();
- if(!wynik) break;
- for(int i=7; i>=0; i--)
- {
- najstarszy_bit = liczba&0x80000000;
- zmienna = int(bajt);
- zmienna = zmienna>>i;
- zmienna = zmienna&(0x01);
- liczba = liczba<<1;
- liczba = liczba|zmienna;
- // najstarszy_bit = liczba&(0x80000000);
- if(najstarszy_bit == 0x80000000)
- {
- liczba = liczba^wielomian;
- }
- }
- }
- for(int i=0; i<32; i++)
- {
- najstarszy_bit = liczba&0x80000000;
- liczba = liczba<<1;
- // najstarszy_bit = liczba&(0x80000000);
- if(najstarszy_bit == 0x80000000)
- {
- liczba = liczba^wielomian;
- }
- // cout<<" "<<liczba<<endl;
- }
- plik_odczyt.close();
- return liczba;
- }
- void stworz_plik(unsigned long crc, ofstream &plik_zapis)
- {
- string nowa_nazwa_pliku;
- plik_zapis.open("lab5.crc32", ios::binary);
- int zmienna;
- int tekst;
- tekst = crc>>24;
- tekst = tekst&(0x000000ff);
- plik_zapis<<char(tekst);
- tekst = crc>>16;
- tekst = tekst&(0x000000ff);
- plik_zapis<<char(tekst);
- tekst = crc>>8;
- tekst = tekst&(0x000000ff);
- plik_zapis<<char(tekst);
- tekst = crc>>0;
- tekst = tekst&(0x000000ff);
- plik_zapis<<char(tekst);
- plik_zapis<<endl;
- for(int i=31; i>=0; i--)
- {
- zmienna = crc>>i;
- zmienna = zmienna&(0x01);
- plik_zapis<<zmienna;
- }
- plik_zapis<<endl;
- plik_zapis<<hex<<crc<<endl;
- plik_zapis<<dec<<crc<<endl;
- plik_zapis.close();
- }
- int main(int argc, char *argv[])
- {
- string nazwa_pliku_wejsciowego;
- if (argc<2)
- {
- cout<<"Nie podano nazwy pliku jako parametru wejsciowego!"<<endl;
- return -1;
- // return -1;
- }
- nazwa_pliku_wejsciowego = argv[1];
- cout<<"Podana nazwa pliku: "<<nazwa_pliku_wejsciowego<<endl;
- ifstream plik_odczyt;
- ofstream plik_zapis;
- int wynik = crc(nazwa_pliku_wejsciowego, plik_odczyt);
- cout<<hex<<wynik<<endl;
- stworz_plik(wynik, plik_zapis);
- // system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement