目录
1.知识点概述
- base64
- 正则表达式
2.1 基础知识
2.2 常用正则表达式 - Qt 中使用 http 协议通信
3.1 Qt 中 http 类的使用
3.2 错误提示 - Qt 登录界面搭建
2.BASE64介绍
2. 为什么要使用 base64
在计算机中任何数据都是按 ascii 码存储的,而 ascii 码的 128 ~ 255 之间的值是不可见字符。 而在网络上
交换数据时,比如说从 A 地传到 B 地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一
些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个
Base64 编码,统统变成可见字符,这样出错的可能性就大降低了。 base64 的应用场景 :
它可用来作为 电子邮件 的传输 编码 。
邮件传输协议只支持 ASCII 字符传递,因此如果要传输二进制文件,如:图片、视频是无法实现
的。
Http 协议
HTTP 协议要求请求行和请求头都必须是 ASCII 编码
数据库数据读写 - blob
存储二进制的大数据块
3. base64 算法描述
把 3 个 8 位字节( 3*8=24 )转化为 4 个 6 位的字节( 4*6=24 )
假设有一个字符串 , 需要对这个字符串分组 , 每 3 个字节为一组 , 分成 N 组
将每一组的 3 个字节拆分 , 拆成 4 个字节 , 每个字节有 6bit
在 6 位的前面补两个 0 ,形成 8 位一个字节的形式
每个组就从 3 个字节变成了 4 个字节
结论 : base64 编码之后的字符串变大了 ,
如果剩下的字符不足 3 个字节,则用 0 填充,输出字符使用 '=' ,因此编码后输出的文本末尾可能会
出现 1 或 2 个 '=', 表示补了多少字节,解码的时候,会自动去掉。
3.QT中BASE64的使用
转译字符 -- \
所有的 ASCII 码 都可以用 "\" 加数字(一般是 8 进制数字)来表示。而 C 中定义了一些字母前加 "\" 来表示常
见的那些不能显示的 ASCII 字符 ,如 \0,\t,\n 等,就称为转义字符,因为后面的 字符 ,都不是它本来的
ASCII 字符意思了。
表示 ASCII -- > 大写字母 M (ASCII 十进制值为 77)
用八进制表示 : \0115
用十六进制表示 : \x4d
C 语言中字符的转译
\a -> 响铃
\b -> 退格
\r -> 回车
\n -> 换行
\\ -> 代表一个反斜线字符 '\'
2. 正则表达式中使用的一些特殊字符
?
+
{
}
|
(
)
[
]
4.正则表达式中的位置限定字符


5.修饰数量的特殊字符
字符
描述
.
匹配除 "\n" 之外的任何单个字符。
x|y
匹配 x 或 y 。
xyz
字符集合。匹配所包含的任意一个字符。
\^xyz
负值字符集合。匹配未包含的任意字符。
a-z
字符范围。匹配指定范围内的任意字符。
\^a-z
负值字符范围。匹配任何不在指定范围内的任意字符。
\d
匹配一个数字字符。等价于 [0-9] 。
4. 练习
5. 参考资料
1 . (.|\n)
- 匹配一个字符 , 任意字符
2 . (z|f)ood - 匹配 : zood, food
3 . [abc] - 匹配的字符满足 [] 中的任意一个字符都可以
- plain
4 . [^abc]
5 . [a-g0-9]
6 . [^A-Z]
1
2
3
4
5
6
7
8
9
10
用户名
^[a-z0-9_-]{3,16} $
时间 ( 小时 : 分钟 , 24 小时制 )
((1|0?)[0-9]|2[0-3]):([0-5][0-9])
- (1|0?)[0-9] - > 最大值 : 19 , 最小值 : 0
- 2 [0-3]) - > 范围 : 20 , 23
IP 地址
\d == [0-9]
192 .168.22.11
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
- ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.)
- 2 [0-4]\d - > 范围 : 200 - > 249
- 25 [0-5] - > 范围 : 250 - > 255
-
01\]?\\d\\d? - \> 范围 : 0 - \> 199
- ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.)
- 得到 (0-255).
6.正则表达式中的字符匹配

7.正则表达式例子

