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

有帮助吗?

解决方案

八位字节(8位符号) - > base64(6位符号)转换在字节上工作,而不是字符,所以它与字符串编码相同。


清晰:Base64不是字符编码。发件人和接收器需要在字符编码(ASCII,UTF-8,UTF-16,UCS-2等)以及传输方法(Base64,GZIP等)上达成一致。

其他提示

要将某些数据编码为base64您可以使用 base64 来自Xerces库的类。它看起来像以下内容:

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

如果使用MFC使用Visual C ++,则还有一个库来执行此操作。签出生成的Base64EncodeBase64Decode

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top