Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <fstream>
- #include <stdio.h>
- #include <string.h>
- using namespace std;
- struct Package{
- unsigned int number;
- unsigned int size;
- };
- int main()
- {
- std::fstream plik;
- plik.open( "plik.txt", std::ios::in |std::ios::binary );
- plik.seekg (0, plik.end);
- int length = plik.tellg();
- cout<< "Rozmiar pliku: "<< length <<endl;
- plik.seekg (0, plik.beg);
- // allocate memory:
- char * buffer = new char [length];
- // read data as a block:
- plik.read (buffer,length);
- char *input_data = ( char*)calloc(length+1, sizeof( char)); //przydzielenie miejsca w pamięci dla input_data
- plik.close();
- // print content:
- cout<< " Plik przed przeslaniem:"<<endl;
- std::cout.write (buffer,length);
- cout<< " "<<endl;
- delete[] buffer;
- int package_header_size = sizeof(Package); /// rozmiar struktury pakiet w bajtach (8)
- cout<< "Rozmiar struktury w bajtach: "<<package_header_size<<endl;
- int package_data_size = 10; ///ustalenie ilosci bajtow w pakiecie
- int stream_size = length / package_data_size; ///ilosc pakietow w strumieniu
- int package_rest = 0;
- if((length%package_data_size) !=0){ /// jesli zostala jakas reszta
- stream_size++; /// to ilosc pakietow sie zwieksza o jeden
- package_rest = length % package_data_size;
- }
- cout<< "\nIlosc pakietow: "<< stream_size<<endl;
- char * stream; ///deklarowanie wskaznika dla symulowanego strumienia
- stream =( char *)calloc(stream_size +1, package_header_size+ package_data_size); ///przydzielenie miejsca w pamieci dla strumienia
- char *stream_pointer; ///wskaznik do operowania na strumieniu
- stream_pointer = stream;
- for(int i=0 ; i<stream_size; i++){
- Package *package; ///tworzenie wskaznika do pakietu
- package = reinterpret_cast<Package*> (stream_pointer);
- package-> number = i;
- if(i == stream_size-1 && package_rest != 0){
- package->size = package_rest;
- }
- else{
- package->size = package_data_size;
- }
- ///kopiowanie danych do strumienia
- memcpy(stream_pointer +package_header_size, stream_pointer+package_header_size, package_data_size);
- stream_pointer += (package_header_size+package_data_size);
- }
- for(int i=0; i<(package_header_size + package_data_size)*stream_size; i++)
- {
- if(i%(package_header_size+package_data_size) == 0)
- cout <<"\n";
- printf("%02hhx ", stream[i]);
- }
- cout <<"\n\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement