![a159d85a704bca37d8701712ad1f8a40.png](https://i-blog.csdnimg.cn/blog_migrate/5dde19594bc8ff073cf310fe7305522b.png)
本文介绍如何使用Qt接口对数据进行Base64编解码。
1.介绍
Base64是基于64个可打印字符来显示2进制数据,它用于传输8Bit字节代码,并在HTTP传输中广泛应用。
1.1 规则
- 把3个字符变成4个字符(加两位高位0,数据一次递后)。
- 每76个字符加一个换行符。
- 最后的结束符也要处理(加等于号)。
1.2 Base64对照表
![b95c0f68e85e6eb0ff3309c47b6e5ca1.png](https://i-blog.csdnimg.cn/blog_migrate/fe05292cb26508750ad3198ffad21f63.png)
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枚举值一览表
![5d39d4870a87210017addc885015f9d6.png](https://i-blog.csdnimg.cn/blog_migrate/87615e895287f32c31ff3e34c7de0c99.png)
- 对照示例:
![cba9bc2e2fc29280baaa598212f39c74.png](https://i-blog.csdnimg.cn/blog_migrate/2bee5fdfef7bed9742f9229ab7e537ba.png)
5.关于更多
https://tools.ietf.org/html/rfc2045