5

我有一个文件的Data-Url作为 std:string。必须对 base64 编码数据进行解码,然后将其传递给此函数:

open (const byte *  data, long size)

所以首先我提取编码数据

size_t pos = dataurl.find_first_of(',');
std::string encoded = dataurl.substr(spos + 1);

然后我使用这个base64解码器

std::string decoded = base64_decode(encoded);

那么,我怎样才能将字符串类型的“解码”转换为字节*?以下代码产生错误

open((byte *)decoded.c_str(), decoded.size() + 1);
//>>error: 'byte' was not declared in this scope

/编辑:所以有一个 typedef

typedef uint8_t     byte

编码数据是图像!

4

2 回答 2

1

看起来您正在删除const. c_str()返回一个const char *。你的演员应该是(const byte *)

于 2012-10-09T16:44:09.597 回答
-1

byte 是一个无符号字符。尝试open((unsigned char *)decoded.c_str(), decoded.size() + 1);

是的,根据原始 base64 字符串中的编码内容,您可能需要使用不同的解码方法

于 2012-10-09T13:18:46.560 回答