介绍
- 用 记事本 打开 exe、jpg、pdf 这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符。
- 如果要让记事本这样的文本处理软件 能 处理二进制数据,如使用 json 保存二进制信息,需要先把数据先做一个 Base64 编码,统统变成可见字符,再保存。
- Base64 是一种用 64 个字符来表示任意二进制数据的方法,常用于在 URL、Cookie、网页中
传输少量二进制数据 - Base64 要求把每三个 8Bit 的字节转换为四个 6Bit 的字节(3*8 = 4*6 = 24),然后把 6Bit
再添两位高位 0,组成四个 8Bit 的字节,也就是说,转换后的字符串理论上将要比原来的长
1/3。
示例:
(原文)转换前: 11111101, 11111110, 11111111 (二进制)
转换为四个6Bit : 111111, 011111, 111011, 111111(二进制)
填充0: 00111111,00011111, 00111011, 00111111(二进制)
Base64的对照表
Base64的作用
可以 生成对应的Base64文本,对其进行简单的加密,因为转换后的 文本并不是原文本,如果需要查看原文本,需要对Base64的数据进行解密。
QT接口
编码
QByteArray QByteArray::toBase64() const
QByteArray QByteArray::toBase64(QByteArray::Base64Options options) const
示例:
QByteArray text("Hello world");
text.toBase64();
/* 输出: SGVsbG8gd29ybGQ= */
解码
接口:
[static] QByteArray QByteArray::fromBase64(const QByteArray &base64)
[static] QByteArray QByteArray::fromBase64(const QByteArray &base64,
QByteArray::Base64Options options)
- 示例:
QByteArray::fromBase64("SGVsbG8gd29ybGQ=");
/* 输出: Hello world */
Base64Options枚举值一览表