Реализация алгоритма base64 - C (СИ)
Формулировка задачи:
Я скачал реализацию алгоритма кодирования base64:
а вызов следующий:
но вместо вывода MTIz выводится что-то типа MTIzAAAAAAAAAA==
в чем может проблема?
static const char basis_64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; int Base64encode_len(int len) { return ((len + 2) / 3 * 4) + 1; } int Base64encode(char *encoded, const char *string, int len) { int i; char *p; p = encoded; for (i = 0; i < len - 2; i += 3) { *p++ = basis_64[(string[i] >> 2) & 0x3F]; *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] & 0xF0) >> 4)]; *p++ = basis_64[((string[i + 1] & 0xF) << 2) | ((int) (string[i + 2] & 0xC0) >> 6)]; *p++ = basis_64[string[i + 2] & 0x3F]; } if (i < len) { *p++ = basis_64[(string[i] >> 2) & 0x3F]; if (i == (len - 1)) { *p++ = basis_64[((string[i] & 0x3) << 4)]; *p++ = '='; } else { *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] & 0xF0) >> 4)]; *p++ = basis_64[((string[i + 1] & 0xF) << 2)]; } *p++ = '='; } *p++ = '\0'; return p - encoded; }
int main() { int len=0; char buf[20] = "123"; char result_buf[100]; //len = dllfunc2(sizeof(buf))+2; len = Base64encode_len(sizeof(buf)); Base64encode(result_buf,buf, len); printf(result_buf); return 0; }
Решение задачи: «Реализация алгоритма base64»
textual
Листинг программы
len = Base64encode_len(strlen(buf)); Base64encode(result_buf, buf, strlen(buf));
Объяснение кода листинга программы
len
- длина результата кодирования в base64, вычисляется с помощью функции Base64encode_lenresult_buf
- буфер для хранения результата кодированияbuf
- исходная строка, которую необходимо закодировать в base64strlen(buf)
- длина исходной строки
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д