Question

Quelle est la meilleure façon de convertir une chaîne large en base64 ?

Était-ce utile?

La solution

octet (Symboles 8 bits) -> Base64 (Symboles 6 bits) Conversion des travaux sur les octets, non des caractères, il fonctionne donc de la même manière indépendante de votre codage de chaîne.


Pour être clair: base64 n'est pas un caractère codant.L'expéditeur et le récepteur doivent être d'accord sur le codage de caractères (ASCII, UTF-8, UTF-16, UCS-2, etc.) ainsi que la méthode de transport (base64, gzip, etc.).

Autres conseils

Pour encoder certaines données à base64, vous pouvez utiliser base64 classe de la bibliothèque de Xerces.Cela pourrait ressembler à ce qui suit:

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 vous utilisez Visual C++ avec MFC, il existe déjà une bibliothèque pour ce faire.Vérifier Base64Encode et Base64Decode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top