簡體   English   中英

C ++如何將寬字符串轉換為base64?

[英]C++ how convert wide string to base64?

將寬字符串轉換為base64的最佳方法是什么?

八位字節(8位符號) - > Base64(6位符號)轉換適用於字節,而不是字符,因此它的工作方式與字符串編碼無關。


需要說明的是:Base64不是字符編碼。 發送者和接收者需要就字符編碼(ASCII,UTF-8,UTF-16,UCS-2等)以及傳輸方法(Base64,gzip等)達成一致。

要將某些數據編碼為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) );

如果您使用Visual C ++與MFC,已經有一個庫來執行此操作。 查看Base64EncodeBase64Decode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM