Pergunta

Qual é a melhor forma de converter a cadeia de largura para base64?

Foi útil?

Solução

octet (símbolos de 8 bits) -> Base64 (símbolos de 6 bits) Conversão funciona em bytes, não caracteres, por isso funciona da mesma maneira independente da codificação da sua string.


.

Para ser claro: a base64 não é uma codificação de caracteres.Remetente e receptor precisam concordar com a codificação de caracteres (ASCII, UTF-8, UTF-16, UCS-2, etc), bem como o método de transporte (base64, gzip, etc).

Outras dicas

Para codificar alguns dados para base64 você pode usar Base64 classe da biblioteca Xerces.Ele pode ter a seguinte aparência:

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 você estiver usando o Visual C++ com o MFC, já existe uma biblioteca para fazer isso.Confira Base64Encode e Base64Decode.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top