Base64在线转换⼯具(详解)
1.项⽬背景:
在计算机中⼀个字节共有256种,即ascii码表,⽽ascii码的128~255之间的值是不可见字符,对于⼀些只⽀持可见字符的协议,⽐如邮件传输协议(SMTP)只⽀持可见的ASCII字符的传递,如果要传输⼆进制⽂件,⽐如:图⽚、视 频是⽆法实现的,因此就有了base64编码格式,Base64编码格式对于所有⼆进制格式的数据,都可以转化为可显 ⽰的字符。base64的应⽤场景⾮常多,⽐如:
1.
1. 在⽹络上交换数据时,⽐如说从A地传递到B地,往往要经过多个路由设备,由于不同的设备对字符的处理⽅  式有⼀些不同,这
样那些不可见字符就有可能被处理错误,不利于传输。
2. http先以当中的key-value字段,必须进⾏url编码,不然出现的等号或者空格可能是解析失败
3. 有些⽂本协议不⽀持可见字符传输,⽐如简单邮件传输协议(SMTP)
4. ⽹页中内嵌简单图⽚
2.项⽬⽬标:
实现⼀个在线的base64的转换⼯具,⽀持⽂本的base64编码以及base64的解码,以及图⽚base64的转换
3.整体框架:
采⽤B/S的模式
4.base64编码原理
base64编码之所以成为base64,是因为其使⽤64个字符来对⼆进制数据进⾏编码。
采⽤对应的编码表:
4.1编码过程:
这是最重要的⼀步,也是核⼼的地⽅
具体编码过程如下:
1. 将每三个字符作为⼀组,⼀共是24个⼆进制⽐特位
2. 将这24个⼆进制⽐特位分为4组,每组有6个⼆进制⽐特位
3. 在每组前⾯加两个00扩展成32个⼆进制位,即四个字节
说⽩了就是将每三个字节转变为上述表格中可显⽰的4个字节。具体如下:
字符串能被3整除,⽐如base64编码:Man
1.  "M"、"a"、"n"的ASCII值分别是77、97、110,对应的⼆进制值是01001101、01100001、01101110, 将它们连成⼀个24位的⼆进制字符串010011010110000101101110。
2.      将这个24位的⼆进制字符串分成4组,每组6个⼆进制位:010011、010110、000101、101110。
3.      在每组前⾯加两个00,扩展成32个⼆进制位,即四个字节:00010011、00010110、00000101、
00101110。它们的⼗进制值分别是19、22、5、46。
4.      根据上表,得到每个值对应Base64编码,即T,W,F,U
不能被3整除,⽐如base64编码:Lucy
如果要编码的字节数不能被3整除,最后会多出1个或2个字节,先使⽤0字节值在末尾补⾜,使其能够被3整    除,然后再进⾏Base64的编码。在编码后的Base64⽂本后加上⼀个或两个=号,代表补⾜的字节数。也就是  说,当最后剩余⼀个⼋位字节(1个byte)时,最后⼀个6位的Base64字节块有四位是0值,最后附加上两个  等号;如果最后剩余两个⼋位字节(2个byte)时,最后⼀个6位的base字节块有两位是0值,最后附加⼀个等 号。
注意:base64⼀⾏最多只能显⽰76个可显字符。
缺陷:Base64将三个字节转化成四个字节,因此Base64编码后的⽂本,会⽐原⽂本⼤出三分之⼀左右
4.2解码过程
解码过程与编码过程是可逆的,对于⼀个base64的结果,只需每四个⼀组,将其转化为3个字节即可。
采⽤对应的解码表:
假设对于base64结果:aGVsbG8=
每四个字节⼀组,以每个字符的ASCII码为下标,从解码表中取每个字节对应的解码表中的下标,对于每个下标取  其低6位,构成24个⽐特位,即:
base64[0]取其低6位,存储到⼀个整形的第18~23⽐特位置>base64[0]<<18
base64[1]取其低6位,存储到⼀个整形的第12~17⽐特位置>base64[1]<<12
base64[2]取其低6位,存储到⼀个整形的第11~06⽐特位置>base64[2]<<6
base64[3]取其低6位,存储到⼀个整形的第0~5⽐特位置>base64[3]
然后依次取该整形的低三个字节,即解码后的结果。
根据这样⼦的编码与解码,就能编写出base64的类与代码。
5.搭建服务端
万能在线进制转换器转换器网5.1 使⽤cpp-httplib搭建服务器
本⽂使⽤cpp-httplib搭建http服务器,cpp-httplib是⼀个C++封装的跨平台的http库,借助该库可以快速在
windows和linux下搭建http服务器和客户端,使⽤⾮常简单,只需在项⽬中包含httplib.h头⽂件即可。
搭建http服务器的流程:
1. 搭建tcp服务器
2. 等待客户端连接请求
3. 连接到来时,则创建线程/进程来处理这个连接
5.2Json使⽤介绍
JSON( JavaScript Object Notation)是⼀种轻量级的数据交换格式.易于阅读和理解,也易于机器解析和⽣成.JSON采⽤独⽴于语⾔的⽂本格式,使⽤了类似于C语⾔家族的习惯(包括C,C++,C#,Java, JavaScript, Perl, Python等).这些特性使得JSON成为理想的数据交换语⾔。
1. json格式
对象
对象是⼀个⽆序的"'名称/值'对"集合.⼀个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后 跟⼀个“:”(冒
号);“‘名称/值’ 对”之间使⽤“,”(逗号)分隔。
数组
数组是值(value)的有序集合。⼀个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间间使 ⽤“,”(逗号)分隔。
1. vs2013下搭建json环境
2.设置json头⽂件加载路径
3.设置json lib库⽂件路径
4.包含json头⽂件和引⼊json静态库⽂件
5.3http协议约定
1.⽂本转换为base64编码
2.图⽚转base64编码
6.客户端处理:
客户端请求以及收到服务响应之后,将转换结果更新到⽹页中,⽤THML语⾔实现。
以下是我编写的源代码;
base64类头⽂件

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。