3

将宽字符串转换为 base64 的最佳方法是什么?

4

3 回答 3

6

八位字节(8 位符号)-> Base64(6 位符号)转换适用于字节,而不是字符,因此它的工作方式与字符串编码无关。


需要明确的是:Base64 不是字符编码。发送方和接收方需要就字符编码(ASCII、UTF-8、UTF-16、UCS-2 等)以及传输方法(Base64、gzip 等)达成一致。

于 2011-05-23T14:08:00.353 回答
1

要将某些数据编码为 base64,您可以使用Xerces 库中的Base64类。它可能如下所示:

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) );
于 2011-05-23T14:08:19.557 回答
0

如果您将 Visual C++ 与 MFC 一起使用,那么已经有一个库可以执行此操作。签出Base64EncodeBase64Decode

于 2011-05-23T14:14:04.690 回答