[C++ Builder] Kodowanie Base64

0

Witam, mam takie pytanie, właśnie jestem w trakcie rozgryzania algorytmu Base64 wszystko niby idzie ok tylko mam pewien problem, przejrzałem chyba wszystkie sensowne stronki dostępne w google i w prawdzie w co drugiej jest to wyjaśnione ale bardzo pobierznie, chodzi mi o sprawe błachą, a dokładnie chce wiedzieć co się robi w przypadku gdy do zakodowania mamy np tekst 8 znakowy... czyli po podzieleniu na 3 zostają 2 znaki reszty :/ Czy ktoś kto sie orientuje może mi łapotologicznie wytłumaczyć co mam zrobić? oto kawałek kodu którego używam do kodowania:

char chars[64]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

String E="abcdefgh";
AnsiString all;

for(int i=0;i<(E.Length()/3);i++)
{
char x1=chars[ E[1+(i*3)] >> 2];
char x2=chars[((E[1+(i*3)]&3) << 4) | ((E[2+(i*3)] & 240) >> 4)];
char x3=chars[((E[2+(i*3)]&15)<<2)|((E[3+(i*3)]&192)>>6)];
char x4=chars[E[3+(i*3)]&63];
all=all+(String)x1+(String)x2+(String)x3+(String)x4;
}

Wiem ze kod nie wydaje się może zbyt czytelny i optymalny ale ogólnie wykorzystuje tutaj operacje bitowe :)

Dzięki za pomoc :)

0

...aleś tu pobitował ;)

dopisz spacje tak żeby dlugosc szyfrowanego lancucha była podzielna przez 3 i bedzie dobrze..

0

dodaje sie znaczek '=' na koncu :P
tutaj masz kod jak ja to zrobilem:

http://www.gskgonet.com.pl/cepa/explore.php?path=tmp/base64

1 użytkowników online, w tym zalogowanych: 0, gości: 1