本文介绍如何使用Qt接口对数据进行Base64编解码。

1.介绍

  Base64是基于64个可打印字符来显示2进制数据,它用于传输8Bit字节代码,并在HTTP传输中广泛应用。

1.1 规则

  1. 把3个字符变成4个字符(加两位高位0,数据一次递后)。
  2. 每76个字符加一个换行符。
  3. 最后的结束符也要处理(加等于号)。

1.2 Base64对照表

1.3 示例

  • 转化前:
1111110,0111111,11111100
  • 把3个字符变成4个字符(加两位高位0):
00111111,00100111,00111111,00111100
  • 翻译为十进制:
63,39,63,60
  • 与Base64对照表转译:
/,n,/,8
  • 最后得出为/n/8

2.编码

  • 接口
QByteArray QByteArray::toBase64() const
QByteArray QByteArray::toBase64(QByteArray::Base64Options options) const
  • 示例
QByteArray text("Hello world");
text.toBase64();
/* 输出: SGVsbG8gd29ybGQ= */

3.解码

  • 接口
[static] QByteArray QByteArray::fromBase64(const QByteArray &base64)
[static] QByteArray QByteArray::fromBase64(const QByteArray &base64, QByteArray::Base64Options options)
  • 示例
QByteArray::fromBase64("SGVsbG8gd29ybGQ=");
/* 输出: Hello world */

4.关于枚举Base64Options

  • Base64Options枚举值一览表
Base64Options 含义
Base64Encoding (默认)常规Base64字母表,简称“Base64”
Base64UrlEncoding 与常规Base64不同的是将
“+”和“/”分别改成了“-”和“_”,
对url更友好
KeepTrailingEquals (默认)保持编码数据末尾后填充等号,
数据的大小总是4的倍数。
OmitTrailingEquals 省略编码数据末尾的等号
  • 对照示例
toBase64(Base64Options ) Hello world?!
Base64Encoding SGVsbG8gd29ybGQ/IQ==
Base64Encoding | OmitTrailingEquals SGVsbG8gd29ybGQ/IQ
Base64UrlEncoding SGVsbG8gd29ybGQ_IQ==
Base64UrlEncoding | OmitTrailingEquals SGVsbG8gd29ybGQ_IQ

5.关于更多

https://tools.ietf.org/html/rfc2045

Qt之Base64编解码相关推荐

  1. 通过OpenSSL的接口实现Base64编解码

    对openssl genrsa产生的rsa私钥pem文件,使用普通的base64解码会有问题,如使用https://blog.csdn.net/fengbingchun/article/details ...

  2. Java实现BASE64编解码

    Java实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs BASE64和其它类似的编码算法通经常使用于转换二进制数据为文本数据,其目 ...

  3. python 图片base64 编解码,转换成Opencv,PIL.Image图片格式

    Python PIL.Image和OpenCV图像格式相互转换 二进制打开图片文件,base64编解码转成Opencv格式: # coding: utf-8 import base64 import ...

  4. Delphi 自带的 Base64 编解码函数

    今天帮别人解决一个关于 Base64 编解码的问题,竟然发现 Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个 ...

  5. Java 8实现BASE64编解码

    Java 8实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Java一直缺少BASE64编码 API,以至于通常在项目开发中会选用 ...

  6. Notepad++插件Base64编解码

    我们平常进行Base64编码需要自己写代码转换, 或者使用其他人编写的小工具程序, 也可以使用在线base64编码工具, 现在我们还可以使用Notepad++自带的插件, 进行Base64编码和解码, ...

  7. Python学习教程:Python3内置模块之base64编解码方法小结

    Python学习教程:Python3内置模块之base64编解码方法小结 概述 Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64 就是一种基于 64 个可打印字符来 ...

  8. ubuntu下c++中base64编解码测试和图片编解码测试

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 字符数组的base64编解码 base64.h #include <string>std::string base64_encode(un ...

  9. MSDK手Q邀请透传参数问题:url编解码与base64编解码

    最近做MSDK手Q的邀请功能,遇到一个坑,手Q结构化消息分享功能接口如下: /*** @param scene 标识发送手Q会话或者Qzone* eQQScene.QQScene_QZone: 分享到 ...

  10. delphi Base64 编解码

    Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个单元提供两套四个公开函数: 对流的编解码: procedure ...

最新文章

  1. Win7最高权限问题
  2. Java™ 教程(Queue接口)
  3. SSM框架整合(一)
  4. ajax中return不生效
  5. mysqldump普通账号Got error: 1044
  6. 【C语言重点难点精讲】C语言指针
  7. flex gallery / 产品展示
  8. collector_使用Data Collector监视SQL Server性能
  9. 开发一个React + Electron应用
  10. C++智能指针的几种用法
  11. sybase如何配置monitor
  12. Hybrid LSTM and Encoder-Decoder Architecturefor Detection of Image Forgeries的复现梳理
  13. JAVA接口签名(Signature)实现方案
  14. Winxp不幸中毒以及手杀过程
  15. @2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017) K:Kayaking Trip(二分+贪心)
  16. Variation_Model 差异模板算子总结
  17. Ubuntu18.04卸载并重新安装Ubuntu及
  18. 深圳FC1511型号单片机应用程序编程开发环境MCU
  19. iPad、iPad Pro反复自动重启怎么办?
  20. QGIS二次开发:加载XYZ Tiles形式的瓦片地图

热门文章

  1. IDEA去掉SQL语句的黄色警告
  2. MCU的GPIO输出模式Open Drain Push/Pull的理解
  3. 阿里、腾讯裁员,2022金三银四Android开发该何去何从?
  4. 阿里云服务器价格表,1核2G、2核4G、4核8G爆款配置收费标准
  5. 青春是一列不再回头的火车…
  6. 光耀卡服务器维修,3月28号服务器维护公告
  7. PC的足迹--多核时代《九》
  8. 苏格拉底的最后日子――柏拉图对话集
  9. 程序员为什么一定要学好数学?驻足听一下“老人言”
  10. 如何一键重装电脑系统?在家里用电脑重装win10系统步骤