Qt之Base64编解码
本文介绍如何使用Qt接口对数据进行Base64编解码。
1.介绍
Base64是基于64个可打印字符来显示2进制数据,它用于传输8Bit字节代码,并在HTTP传输中广泛应用。
1.1 规则
- 把3个字符变成4个字符(加两位高位0,数据一次递后)。
- 每76个字符加一个换行符。
- 最后的结束符也要处理(加等于号)。
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编解码相关推荐
- 通过OpenSSL的接口实现Base64编解码
对openssl genrsa产生的rsa私钥pem文件,使用普通的base64解码会有问题,如使用https://blog.csdn.net/fengbingchun/article/details ...
- Java实现BASE64编解码
Java实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs BASE64和其它类似的编码算法通经常使用于转换二进制数据为文本数据,其目 ...
- python 图片base64 编解码,转换成Opencv,PIL.Image图片格式
Python PIL.Image和OpenCV图像格式相互转换 二进制打开图片文件,base64编解码转成Opencv格式: # coding: utf-8 import base64 import ...
- Delphi 自带的 Base64 编解码函数
今天帮别人解决一个关于 Base64 编解码的问题,竟然发现 Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个 ...
- Java 8实现BASE64编解码
Java 8实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Java一直缺少BASE64编码 API,以至于通常在项目开发中会选用 ...
- Notepad++插件Base64编解码
我们平常进行Base64编码需要自己写代码转换, 或者使用其他人编写的小工具程序, 也可以使用在线base64编码工具, 现在我们还可以使用Notepad++自带的插件, 进行Base64编码和解码, ...
- Python学习教程:Python3内置模块之base64编解码方法小结
Python学习教程:Python3内置模块之base64编解码方法小结 概述 Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64 就是一种基于 64 个可打印字符来 ...
- ubuntu下c++中base64编解码测试和图片编解码测试
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 字符数组的base64编解码 base64.h #include <string>std::string base64_encode(un ...
- MSDK手Q邀请透传参数问题:url编解码与base64编解码
最近做MSDK手Q的邀请功能,遇到一个坑,手Q结构化消息分享功能接口如下: /*** @param scene 标识发送手Q会话或者Qzone* eQQScene.QQScene_QZone: 分享到 ...
- delphi Base64 编解码
Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个单元提供两套四个公开函数: 对流的编解码: procedure ...
最新文章
- Win7最高权限问题
- Java™ 教程(Queue接口)
- SSM框架整合(一)
- ajax中return不生效
- mysqldump普通账号Got error: 1044
- 【C语言重点难点精讲】C语言指针
- flex gallery / 产品展示
- collector_使用Data Collector监视SQL Server性能
- 开发一个React + Electron应用
- C++智能指针的几种用法
- sybase如何配置monitor
- Hybrid LSTM and Encoder-Decoder Architecturefor Detection of Image Forgeries的复现梳理
- JAVA接口签名(Signature)实现方案
- Winxp不幸中毒以及手杀过程
- @2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017) K:Kayaking Trip(二分+贪心)
- Variation_Model 差异模板算子总结
- Ubuntu18.04卸载并重新安装Ubuntu及
- 深圳FC1511型号单片机应用程序编程开发环境MCU
- iPad、iPad Pro反复自动重启怎么办?
- QGIS二次开发:加载XYZ Tiles形式的瓦片地图