如何从'const char [9]'转换为'const unsigned char *'

How to convert from 'const char [9]' to 'const unsigned char *'

本文关键字:const char 转换 unsigned      更新时间:2023-10-16

我正在尝试这里提到的代码:

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")但我个人不是这种方法的忠实粉丝。