Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Base64 и кириллические символы

12K
16 февраля 2011 года
Killer-App
5 / / 07.10.2005
Есть код, проблема в том что когда буфере встречаются русские символы, то они не кодируются. Подскажите почему, и как исправить. Код не мой нашел в инете
Код:
static char charBase64[] =
{
    'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
    'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f',
    'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',
    'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/'
};

long Base64Encode (char* lpszInputString,char* lpOutputBuffer,int nMaxLength)
{
    char chr[3], enc[4];

    int i,outpos = 0;


    for(i=0; i<strlen(lpszInputString); i+=3 )
    {
        if( outpos+4 >= nMaxLength )
            break;

        chr[0] = lpszInputString;
        chr[1] = lpszInputString[i+1];
        chr[2] = lpszInputString[i+2];

        enc[0] = chr[0] >> 2;
        enc[1] = ((chr[0] & 0x03) << 4) | (chr[1] >> 4);
        enc[2] = ((chr[1] & 0x0F) << 2) | (chr[2] >> 6);
        enc[3] = chr[2] & 0x3F;

        lpOutputBuffer[outpos++] = charBase64[enc[0]];
        lpOutputBuffer[outpos++] = charBase64[enc[1]];

        if( i+1 >= strlen(lpszInputString) )
        {
            lpOutputBuffer[outpos++] = '=';
            lpOutputBuffer[outpos++] = '=';
        }
        else if( i+2 >= strlen(lpszInputString) )
        {
            lpOutputBuffer[outpos++] = charBase64[enc[2]];
            lpOutputBuffer[outpos++] = '=';
        }
        else
        {
            lpOutputBuffer[outpos++] = charBase64[enc[2]];
            lpOutputBuffer[outpos++] = charBase64[enc[3]];
        }
    }

    lpOutputBuffer[outpos] = 0;
    return outpos;
}
277
16 февраля 2011 года
arrjj
1.7K / / 26.01.2011
Замени все char на unsigned char и должно всё заработать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог