x-kom hosting

[C++] Rozdzielanie ciągu znaków?

mati199537
utworzono
utworzono (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
komentarz (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.

  • Dobra wypowiedź 1
mati199537
komentarz
komentarz

Dziękuję bardzo za pomoc ;)

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.