Js base64编码实现
base64在前端领域中是相当有用,比如前端里的dataURL就是base64编码实现的,使用它的好处就很多了,假如需要从服务器拿到一些logo,但是这些logo可能只有几十byte甚至更小,那这样这个logo单独占用一条http传输是很不划算的,我们可以把这个logo进行base64编码,也就是dataURL,直接嵌入页面中,在浏览器获取页面的时候,直接由浏览器渲染出来,但是要知道base64编码出来的体积要比原来大,如果要把一个比较大的突破编码成dataURL,那是相当庞大的,显然不适合直接嵌入页面中,这样会使页面加载过于缓慢。最后要说到base64的浏览器支持问题,除了ie8以下的版本不能很好的支持之外,其他的浏览器大都支持(未测试)。
纸上得来终觉浅,绝知此事要躬行
既然base64编码这么有用,不妨来了解一下base64的原理。
· base64的编码都是按字符串长度,以每3个8bit的字符为一组
· 首先把每组的字符都转换为ascii码
· 然后把ascii码转换为8位二进制数
· 现在得到了24位二进制数,把它分为4个6位二进制数,并在最高位补两个0
· 再分后的四个二进制数转换为十进制
· 然后对比base64编码表,来进行转换
Base64 编码表 | |||||||
---|---|---|---|---|---|---|---|
Value | Char | Value | Char | Value | Char | ||
0 | A | 16 | Q | 32 | g | 48 | w |
1 | B | 17 | R | 33 | h | 49 | x |
2 | C | 18 | S | 34 | i | 50 | y |
3 | D | 19 | T | 35 | j | 51 | z |
4 | E | 20 | U | 36 | k | 52 | 0 |
5 | F | 21 | V | 37 | l | 53 | 1 |