C++如何将宽字符串转换为base64?

发布于 2024-11-09 08:35:55 字数 32 浏览 0 评论 0原文

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

What is the best way to convert wide string to base64?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你是我的挚爱i 2024-11-16 08:35:55

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


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

Octet (8 bit symbols) -> Base64 (6 bit symbols) conversion works on bytes, not characters, so it works the same way independent of your string encoding.


To be clear: Base64 is not a character encoding. Sender and receiver need to agree on the character encoding (ASCII, UTF-8, UTF-16, UCS-2, etc) as well as the transport method (Base64, gzip, etc).

錯遇了你 2024-11-16 08:35:55

要将某些数据编码为 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) );

To encode some data to base64 you can use Base64 class from the Xerces library. It could look like the following:

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) );
回梦 2024-11-16 08:35:55

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

If you are using Visual C++ with MFC, there is already a library to do this. Check out Base64Encode and Base64Decode.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文