mati199537 utworzono 2 sierpnia 2012 utworzono 2 sierpnia 2012 (edytowane) Witam, Chciałbym napisać prosty program który będzie szyfrował dany ciąg znaków za pomocą Base64. Niby ogarnąłem na wikipedii jak to powinno mniej więcej działać, ale utknąłem już praktycznie na samym początku. Zacznę może od tego w jaki sposób chciałbym to zrobić: 1. Program prosi o podanie ciągu znaków które mają być zaszyfrowane. 2. Program przedstawia ten ciąg binarnie (wg. ASCII). 3. Z racji iż każdy znak jest zapisany za pomocą 8 bitów, a Base64 ma dzielić cały ciąg co 6 bitów a nie co 8, to w tym momencie pojawia się problem, bo mam zapisany cały ciąg bitów danego wyrazu, ale nie potrafię go podzieli co 6. 4. Potem z oddzielnego pliku, w którym będą podane wartości znaków dla Bas64, program bedzie sprawdzał jaka liter jest przypisana danej wartości i ją wyświetlał(literę) i tak dla całego wyrazu(ciągu znaków). Załączam tutaj kod mojego programu - póki co bardzo ubogiego: [Code] #include <iostream> #include <cstdlib> #include <string.h> #include <bitset> #include <limits.h> using namespace std; int main() { string txt; cout<<"Podaj tekst ktory cchesz przekonwertowac: "; cin>> txt; cout<<endl; int i; cout<<"Przekonwertowany tekst: "; int r; r=txt.length(); for (i = 0; i < r ; i++) { cout << bitset<8> (txt [i] ); } cout<<endl; cin.get(); } [/Code] Szukałem już trochę na ten temat w internecie i z tego co wiem ciąg znaków(string) to nic innego jak tablica char'ów w której podana jest ilość znaków, i jakie to są znaki. Dlatego można w sumie by było to przenieść może na tablice?, Ale niestety nie bardzo mi to wychodzi. Próbowałem nawet cały ciąg binarny przypisać jakiejś zmiennej ale nie bardzo mi to wychodziło. Może wy macie jakiś pomysł jak można coś takiego napisać? Pozdrawiam i z góry bardzo dziękuję, mati199537
leggo komentarz 2 sierpnia 2012 komentarz 2 sierpnia 2012 (edytowane) Czy dobrze rozumiem, że problem stanowi dobrnie się do poszczególnych bitów? [CODE] #include <iostream> #include <cstdlib> #include <string.h> #include <bitset> #include <limits.h> using namespace std; int main() { string txt; cout<<"Podaj tekst ktory chcesz przekonwertowac: "; cin>>txt; int r; r=txt.length(); cout<<"Podanych liter: "<<r<<endl; bitset<8> *tablica = new bitset<8>[r]; //tablica przechowująca litery for (int i = 0; i < r ; i++) { tablica[i]=txt[i]; //przepisanie liter ze stringa do tablicy } cout<<"Podane litery:"<<endl; for (int i = 0; i < r ; i++) { cout<<tablica[i]<<endl; } //cout<<tablica[0][1]; //drugi (od prawej) bit z pierwszej litery //cout<<tablica[2][4]; //piąty (od prawej) bit z trzeciej litery cout<<endl; } [/CODE] W każdym polu tablicy zapisana jest jedna litera w postaci 8 bitów. Za pomocą odpowiednich indexów (pierwszy dla litery, drugi dla konkretnego bitu (liczonego od prawej)) możesz dostać się do wszystkich bitów. 1
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.