Реализация алгоритма base64 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Я скачал реализацию алгоритма кодирования base64:
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;
 
}
но вместо вывода MTIz выводится что-то типа MTIzAAAAAAAAAA== в чем может проблема?

Решение задачи: «Реализация алгоритма base64»

textual
Листинг программы
    len = Base64encode_len(strlen(buf));
    Base64encode(result_buf, buf, strlen(buf));

Объяснение кода листинга программы

  1. len - длина результата кодирования в base64, вычисляется с помощью функции Base64encode_len
  2. result_buf - буфер для хранения результата кодирования
  3. buf - исходная строка, которую необходимо закодировать в base64
  4. strlen(buf) - длина исходной строки

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы