Domanda

Qual è il modo migliore per convertire una stringa larga in base64?

È stato utile?

Soluzione

ottetto (simboli a 8 bit) -> base64 (simboli 6 bit) La conversione funziona su byte, non caratteri, quindi funziona allo stesso modo indipendente dalla codifica delle stringhe.


.

Per essere chiaro: Base64 non è una codifica dei caratteri.Il mittente e il ricevitore devono essere d'accordo sulla codifica dei caratteri (ASCII, UTF-8, UTF-16, UCS-2, ecc.) Nonché il metodo di trasporto (base64, gzip, ecc.).

Altri suggerimenti

Per codificare alcuni dati su base64 è possibile utilizzare base64 classe dalla biblioteca Xerces.Potrebbe sembrare il seguente:

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

Se si utilizza Visual C ++ con MFC, c'è già una libreria per farlo.Dai un'occhiata Base64Encode e Base64Decode.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top