ZBLOG

/ 解码base64字符串 int decodedSize = av_base64_decode(nullptr, nullptr, nullptr, reinterpret_cast(base64String.c_str()), base64String.length());中只接收三个参数啊

对不起,我之前的回答有误。实际上,av_base64_decode 函数只接受三个参数,并没有提供第四个参数用于传递 Base64 字符串和其长度。

如果您想要解码 Base64 字符串,可以使用其他库或函数来完成。以下是一个示例使用OpenSSL库的方法:

#include <openssl/bio.h>
#include <openssl/evp.h>

std::string base64Decode(const std::string& base64String) {
    // 创建BIO对象
    BIO* bio = BIO_new(BIO_f_base64());
    BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);

    // 将Base64字符串写入BIO对象
    BIO* bioMem = BIO_new_mem_buf(base64String.c_str(), -1);
    bio = BIO_push(bio, bioMem);

    // 计算解码后数据的大小
    size_t outputSize = base64String.length() * 3 / 4;
    std::vector<unsigned char> decodedData(outputSize);

    // 解码
    int len = BIO_read(bio, decodedData.data(), base64String.length());

    // 清理资源
    BIO_free_all(bio);

    if (len > 0) {
        return std::string(decodedData.begin(), decodedData.begin() + len);
    } else {
        return "";  // 解码失败时返回空字符串或抛出异常等处理方式
    }
}

这段代码创建了一个 OpenSSL 的 Base64 编解码器,然后将 Base64 字符串写入编码器进行解码,并将解码后的数据存储在 decodedData 中。

请确保将 OpenSSL 库链接到项目中,以便成功编译和运行此代码。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=17389

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?