Unicode版本的base64编码/解码

时间:2011-01-11 03:49:15

标签: c++ base64

我正在使用http://www.adp-gmbh.ch/cpp/common/base64.html

中的base64编码/解码

使用以下代码可以很好地工作。

  const std::string s = "I Am A Big Fat Cat" ;

  std::string encoded = base64_encode(reinterpret_cast<const unsigned char*>(s.c_str()), s.length());
  std::string decoded = base64_decode(encoded);

  std::cout << _T("encoded: ") << encoded << std::endl;
  std::cout << _T("decoded: ") << decoded << std::endl;

但是,来到unicode

namespace std
{
#ifdef _UNICODE
    typedef wstring tstring;
#else
    typedef string tstring;
#endif
}
const std::tstring s = _T("I Am A Big Fat Cat");

我怎样才能使用上述功能?

仅仅改变

std::string base64_encode(unsigned TCHAR const* , unsigned int len);
std::tstring base64_decode(std::string const& s);

无效。

(我希望base64_encode返回ASCII。因此,应该使用std :: string而不是std :: tstring)

1 个答案:

答案 0 :(得分:4)

Base64将二进制数据编码为文本。因此,您只需要使用wcstombs & co将宽字符转换为相应的字节,就可以了。