c++ - 计算 Base64 编码消息的大小

标签 c++ c base64

我有一个 BASE64 编码字符串:

static const unsigned char base64_test_enc[] =
    "VGVzdCBzdHJpbmcgZm9yIGEgc3RhY2tvdmVyZmxvdy5jb20gcXVlc3Rpb24=";

它没有 CRLF-per-72 字符。

如何计算解码后的消息长度?

最佳答案

好吧,base64 表示 4 个字符中的 3 个字节...所以开始时,您只需除以 4 再乘以 3。

然后您需要考虑 padding :

  • 如果文本以“==”结尾则需要减去2个字节(因为最后一组4个字符只代表1个字节)
  • 如果文本仅以 "=" 结尾,则需要减去 1 个字节(因为最后一组 4 个字符代表 2 个字节)
  • 如果文本根本没有以填充结尾,则不需要减去任何内容(因为最后一组 4 个字符代表正常的 3 个字节)

关于c++ - 计算 Base64 编码消息的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34546498/

相关文章:

c# - 如何在二进制文件(.net 或非托管)中注入(inject)/更新版本和其他详细信息?

c - 在 C 中,是否有一种跨平台的方式来存储变量可能包含的内容以便快速重新加载其内容?

javascript - 将 base64 字符串图像发送到表单输入字段

java - 将 double 组转换为字节数组 : What is the Java way of C# Buffer. BlockCopy?

c - 如何在for循环中获取3次数组?

php base64解码函数无法解码base64图像字符串

c++ - 字符串函数返回奇怪的值

c++ - 函数绑定(bind)的目的

c++ - 使用 native() boost 路径访问器

c - 将管道的读取端重定向到文件描述符