前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt之Base64编解码

Qt之Base64编解码

作者头像
Qt君
发布2019-08-13 23:37:19
3.5K0
发布2019-08-13 23:37:19
举报
文章被收录于专栏:跟Qt君学编程

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

1.介绍

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

1.1 规则

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

1.2 Base64对照表

1.3 示例

  • 编码前:
代码语言:javascript
复制
1111110,0111111,11111100
  • 把3个字符变成4个字符(加两位高位0),数据一次递后:
代码语言:javascript
复制
00111111,00100111,00111111,00111100
  • 翻译为十进制:
代码语言:javascript
复制
63,39,63,60
  • 与Base64对照表转译:
代码语言:javascript
复制
/,n,/,8
  • 最后得出为/n/8

2.编码

  • 接口:
代码语言:javascript
复制
QByteArray QByteArray::toBase64() const
QByteArray QByteArray::toBase64(QByteArray::Base64Options options) const
  • 示例:
代码语言:javascript
复制
QByteArray text("Hello world");
text.toBase64(); 
/* 输出: SGVsbG8gd29ybGQ= */

3.解码

  • 接口:
代码语言:javascript
复制
[static] QByteArray QByteArray::fromBase64(const QByteArray &base64)
[static] QByteArray QByteArray::fromBase64(const QByteArray &base64, 
                                           QByteArray::Base64Options options)
  • 示例:
代码语言:javascript
复制
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.关于更多

代码语言:javascript
复制
https://tools.ietf.org/html/rfc2045
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.介绍
    • 1.1 规则
      • 1.2 Base64对照表
        • 1.3 示例
        • 2.编码
        • 3.解码
        • 4.关于枚举Base64Options
        • 5.关于更多
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档