C ++ Как конвертировать широкую строку в Base64?

StackOverflow https://stackoverflow.com/questions/6098288

  •  09-09-2020
  •  | 
  •  

Вопрос

Какой лучший способ преобразовать широкую строку в base64?

Это было полезно?

Решение

октет (8-битные символы) -> base64 (6-битные символы) преобразование работы по байтам, а не символам, поэтому он работает так же независимо от вашей строки кодировки.


Быть понятным: Base64 не является кодировкой символов.Отправитель и приемник должны договориться о кодировании персонажа (ASCII, UTF-8, UTF-16, UCS-2 и т. Д.), а также в транспортном методе (Base64, GZIP и т. Д.).

Другие советы

Чтобы кодировать некоторые данные в Base64 Вы можете использовать base64 Класс из библиотеки Xerces.Это может выглядеть следующее:

std::wstring input_string = SOME; // some wide string
// keep it in contiguous memory (the following string is not needed in C++0x)
std::vector<wchar_t> raw_str( input_string.begin(), input_string.end() );

XMLSize_t len;
XMLByte* data_encoded = xercesc::Base64::encode( reinterpret_cast<const XMLByte*>(&raw_str[0]), raw_str.size()*sizeof(wchar_t), &len );
XMLCh* text_encoded = xercesc::XMLString::transcode( reinterpret_cast<char*>(data_encoded) );

// here's text_encoded is encoded text
// do some with text_encoded

XMLString::release( &text_encoded );
XMLString::release( reinterpret_cast<char**>(&data_encoded) );
.

Если вы используете Visual C ++ с MFC, уже есть библиотека для этого.Проверьте генеракодицетагкод и генеракодицетагкод.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top