我正在尝试代码mentioned here:
std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) {
}
并传递:base64_encode("mystring", 8)
。
它显示了类型转换错误:
错误C2664:'base64_encode':无法将参数1从'const char [9]'转换为'const unsigned char *
答案 0 :(得分:1)
我刚刚看到这篇文章,并希望为其他试图对字符串进行base64编码的人进行澄清。原始海报所引用的代码来自网页:http://www.adp-gmbh.ch/cpp/common/base64.html。如果您转到作者页面并查看"测试文件"您将看到作者如何推荐使用代码。
const std::string s = "test string" ;
std::string encoded = base64_encode(reinterpret_cast<const unsigned char*>(s.c_str()), s.length());
我在我的程序中尝试过,它看起来效果很好。
答案 1 :(得分:0)
我认为你不能使用unsigned char
来获得字符串文字。从字符串文字创建unsigned char
序列的最简单方法可能是
char const* literal = "hello";
std::vector<unsigned char> ustr(literal, literal + std::strlen(literal));
unsigned char const* ustrptr = ustr.data();
显然,可以将逻辑封装到调用base64_encode()
的合适函数中。
另一种选择只是reinterpret_cast<unsigned char const*>("hello")
,但我个人并不是这种方法的忠实粉丝。