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

时间:2013-09-29 23:38:16

标签: c++

我正在尝试代码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 *

2 个答案:

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