Mam plik binarny, który będzie odczytywany jako znaki. Każda postać została przesunięta nieco na lewą nieznaną liczbę razy (przy założeniu, że owinięty) przez kogoś innego. Chcę móc czytać w każdej postaci, a następnie owijać przesunięcie w prawo (liczba przesunięć, które prawdopodobnie będę musiała być ustalona ręcznie, ponieważ nie wymyśliłem innego sposobu).Trochę przesuwając postać z wrapem? C++
Tak, moja obecna idea jest taka, że czytałem w charakterze, należy utworzyć kopię z temp, a następnie użyć XOR:
char letter; //will hold the read in letter
char temp; //will hold a copy of the letter
while(file.read(&letter, sizeof(letter)) //letter now holds 00001101
{
temp = letter; //temp now holds 00001101
letter >>= 1; //shift 1 position to the right, letter now holds 00000110
temp <<= 7; //shift to the left by (8-1), which is 7, temp now holds 10000000
letter ^= temp; //use XOR to get the wrap, letter now holds 10000110
cout << letter;
}
To ma sens w moim wyczerpanym głowy, ale to nie działa .. i nie mogę zrozumieć dlaczego. Rozmiar znaku to 1 bajt, więc doszedłem do wniosku, że muszę tylko zadzwonić z 8 bitami.
Każda pomoc zostanie doceniona.
EDYCJA: Rozwiązany. Dziękuję wszystkim. Kochaj tę społeczność na śmierć, jesteście niesamowici!
You” Powiedzieliśmy nam, czego oczekujesz - co właściwie dostajesz? –
@ftopbit Niektóre tajemnicze bałagan. –
Czytasz do 'letter' dwa razy na pętlę, odrzucając wartość pierwszego odczytu – jthill