Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <fstream>
  4. #include <stdio.h>
  5. #include <string.h>
  6.  
  7. using namespace std;
  8.  
  9. struct Package{
  10. unsigned int number;
  11. unsigned int size;
  12. };
  13.  
  14. int main()
  15. {
  16.  
  17.  
  18. std::fstream plik;
  19. plik.open( "plik.txt", std::ios::in |std::ios::binary );
  20.  
  21. plik.seekg (0, plik.end);
  22. int length = plik.tellg();
  23. cout<< "Rozmiar pliku: "<< length <<endl;
  24.  
  25. plik.seekg (0, plik.beg);
  26.  
  27.  
  28. // allocate memory:
  29. char * buffer = new char [length];
  30.  
  31. // read data as a block:
  32. plik.read (buffer,length);
  33.  
  34. char *input_data = ( char*)calloc(length+1, sizeof( char)); //przydzielenie miejsca w pamięci dla input_data
  35.  
  36.  
  37. plik.close();
  38.  
  39. // print content:
  40. cout<< " Plik przed przeslaniem:"<<endl;
  41. std::cout.write (buffer,length);
  42. cout<< " "<<endl;
  43. delete[] buffer;
  44.  
  45. int package_header_size = sizeof(Package); /// rozmiar struktury pakiet w bajtach (8)
  46. cout<< "Rozmiar struktury w bajtach: "<<package_header_size<<endl;
  47.  
  48. int package_data_size = 10; ///ustalenie ilosci bajtow w pakiecie
  49.  
  50. int stream_size = length / package_data_size; ///ilosc pakietow w strumieniu
  51. int package_rest = 0;
  52.  
  53. if((length%package_data_size) !=0){ /// jesli zostala jakas reszta
  54. stream_size++; /// to ilosc pakietow sie zwieksza o jeden
  55. package_rest = length % package_data_size;
  56. }
  57.  
  58. cout<< "\nIlosc pakietow: "<< stream_size<<endl;
  59. char * stream; ///deklarowanie wskaznika dla symulowanego strumienia
  60.  
  61. stream =( char *)calloc(stream_size +1, package_header_size+ package_data_size); ///przydzielenie miejsca w pamieci dla strumienia
  62. char *stream_pointer; ///wskaznik do operowania na strumieniu
  63. stream_pointer = stream;
  64.  
  65. for(int i=0 ; i<stream_size; i++){
  66. Package *package; ///tworzenie wskaznika do pakietu
  67. package = reinterpret_cast<Package*> (stream_pointer);
  68. package-> number = i;
  69. if(i == stream_size-1 && package_rest != 0){
  70. package->size = package_rest;
  71. }
  72. else{
  73. package->size = package_data_size;
  74. }
  75.  
  76. ///kopiowanie danych do strumienia
  77. memcpy(stream_pointer +package_header_size, stream_pointer+package_header_size, package_data_size);
  78. stream_pointer += (package_header_size+package_data_size);
  79. }
  80.  
  81. for(int i=0; i<(package_header_size + package_data_size)*stream_size; i++)
  82. {
  83. if(i%(package_header_size+package_data_size) == 0)
  84. cout <<"\n";
  85. printf("%02hhx ", stream[i]);
  86.  
  87. }
  88.  
  89. cout <<"\n\n";
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106. return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement