Witam
Obecnie próbuję napisać kompresję pliku, z tego powodu pracuję na bitach, tworzę char, zmieniam jego bity na takie jak chcę i zapisuje go do pliku.
Odczytania takiego chara z pliku i zamienienie go z powrotem na odpowiedni znak nie jest problemem dla większości kombinacji bitowych, jednak w momencie gdy w pliku znajduje się taki zapis bitów 00000011, to odkodowanie nie przebiega poprawnie.
W jaki sposób mogę pobrać z pliku znak ETX (00000011) i zapisać go do char'a?
Obecny kod:
std::ofstream Gplik("Data/KCP.save", std::ios::out);
std::fstream Hplik("Data/KCPDB.save", std::ios::in);
unsigned long long int Kz = 0;
std::vector <char> Kt;
short int Kb;
while(!Hplik.eof()){
t = Hplik.get();
Kt.push_back(t);
Kz++;
}
for (unsigned long long int KfT = 0; KfT < Kz; KfT++){
t = Kt[KfT];
Kb = 0;
for (short int KfTbc = 0; KfTbc < 2; KfTbc++){
for (short int KfTb = 3 + 4 * KfTbc; KfTb >= 0 + 4 * KfTbc; KfTb--){
if(t&(1<<KfTb)){
Kb += pow(2,KfTb);
}
}
}
Gplik << Kb;
}
Gplik.close();
Hplik.close();