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 :)