Хотелось бы увидеть. работоспособную реализацтю алгоритма.
void Base64_decode(
IN const CHAR* strIn, // Вход
OUT CString& strOut // Выход
) {
const static CHAR base64ABC[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
strOut.Empty();
const size_t len = strlen(strIn);
for (int i=0; i<len; i+=4) {
LONG l =
(( (strIn[i ] != '=')) ? (((LONG)(strchr(base64ABC, strIn[i ]) — base64ABC)) << 18) : 0) |
((((i+1) < len) && (strIn[i+1] != '=')) ? (((LONG)(strchr(base64ABC, strIn[i+1]) — base64ABC)) << 12) : 0) |
((((i+2) < len) && (strIn[i+2] != '=')) ? (((LONG)(strchr(base64ABC, strIn[i+2]) — base64ABC)) << 6 ) : 0) |
((((i+3) < len) && (strIn[i+3] != '=')) ? ((LONG)(strchr(base64ABC, strIn[i+3]) — base64ABC)) : 0);
BYTE ch1 = ((l>>16) & 0xFF); if (ch1) strOut += ch1;
BYTE ch2 = ((l>>8 ) & 0xFF); if (ch2) strOut += ch2;
BYTE ch3 = ( l & 0xFF); if (ch3) strOut += ch3;
}
}
Этот у меня отказался раскодировать такую строку
CString EncodedString = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
на выходе была пустая сктрока. Помогите плиз а то у меня голова уже пухнет от поисков.
04.10.04 06:41: Перенесено модератором из 'C/C++' — Павел Кузнецов
18.10.04 02:58: Перенесено модератором из 'Прочее' — Павел Кузнецов