我正在尝试这里提到的代码:
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 *”
我刚刚看到这篇文章,想为其他尝试对字符串进行 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());
我在我的程序中尝试过,它似乎工作得很好。
我不认为你可以使用unsigned char
s 来获得字符串文字。unsigned char
从字符串文字创建 s 序列的最简单方法可能是
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")
但我个人不是这种方法的忠实拥护者。