Pregunta

¿Cuál es la mejor manera de convertir amplia cadena en base64?

¿Fue útil?

Solución

octeto (símbolos de 8 bits) -> bases64 (símbolos de 6 bits) La conversión funciona en bytes, no caracteres, por lo que funciona de la misma manera independiente de su codificación de cadena.


Para ser claro: Base64 no es una codificación de caracteres.El remitente y el receptor deben acordar la codificación de caracteres (ASCII, UTF-8, UTF-16, UCS-2, etc.), así como el método de transporte (BASE64, GZIP, etc.).

Otros consejos

Para codificar algunos datos a BASE64, puede usarla base64 Clase de la biblioteca de Xerces.Podría parecer lo siguiente:

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) );

Si está utilizando Visual C++ y MFC, ya hay una biblioteca para hacer esto.Echa un vistazo Base64Encode y Base64Decode.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top