如何从'const char [9]'转换为'const unsigned char *'
How to convert from 'const char [9]' to 'const unsigned char *'
我正在尝试这里提到的代码:
std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) {
}
并通过:base64_encode("mystring", 8)
.
它显示类型转换错误:
错误 C2664:"base64_encode":无法将参数 1 从"常量字符 [9]"转换为"常量无符号字符 *
我刚刚看到这篇文章,想为其他尝试 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
序列的最简单方法可能是
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")
但我个人不是这种方法的忠实粉丝。