base64实现原理解析

更新日期: 2021-05-23阅读: 1.6k标签: base64

base64

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

对于前端来说,一切可以放路径的地方,都可以使用base64来替代。

node中的buffer对象可以通过toString('base64')将buffer对象输出为base64。我们这里来简述一下汉字是如何转换成为base64的实现原理。

比如我们来探索一下汉子"哈"通过base64的转换结果为"5ZOI"是如何实现的。

首先我们利用nodejs中Buffer对象的from方法,将汉子转换为buffer对象。可以得到e5 93 88三个16进制的字节。可以看到这个函子由3个字节组成。

const buf = Buffer.from("哈");
console.log(buf); // // e5 93 88

然后再将每个字节转换为二进制, 0x代表16进制,我们需要在e5 93 88前面分别拼上0x, toString方法中可以传入要转换的字进制,这里写2。

// 将每个字节转为二进制
(0xe5).toString(2); // 11100101
(0x93).toString(2); // 10010011
(0x88).toString(2); // 10001000

接着将得到的三个2进制数据连接在一起,得到111001011001001110001000。

111001011001001110001000

然后将111001011001001110001000每六个一组进行切割,这里可以切割为4部分。

111001 011001 001110 001000

接着再每一组的前面用0补位,凑成8位。

00111001
00011001
00001110
00001000

将得到的四组数据分别再转换为10进制数据。这里一共可以获得4个数字,是不是"哈"这个字转换为base64后获取到的4个字符有些接近了。

parseInt('00111001', 2); // 二进制变为10进制 57
parseInt('00011001', 2); // 二进制变为10进制 25
parseInt('00001110', 2); // 二进制变为10进制 14
parseInt('00001000', 2); // 二进制变为10进制 8

base64的编码数据基本是从A-Z加上a-z再加上0123456789+/中获取的。我们拼接出这个字符串。

// base64编码
let str = 'ABCDEFGHIGKLMNOPQRSTUVWSYZ';
str += str.toLowerCase(); // 小写字符拼接一次
str += '0123456789+/'; // 数字拼接一次

我们知道,字符串可以类似数组一样通过下标来获取指定位置的字符,这里通过上面10进制转换之后的值分别获取对应位置的字符,57获取的就是5,25获取的就是Z,14获取的就是O,8获取的就是I。

将这四个字符拼接在一起就是5ZOI。就是之前转换后的base64。

const base64 = str[57] + str[25] + str[14] + str[8]; // 5ZOI

base64转译步骤

1、将字符串通过Buffer.from获取buffer,并将buffer中的每个16的buffer字节转为2进制
2、将所有二进制拼接在一起,6个一组进行划分,在前面补00,凑成8位二进制
3、将新的二进制转换成10进制
4、在base64集合中分别通过10进制下标取出,并链接

链接: https://www.fly63.com/article/detial/10569

javascript图片转换base64,以及如何将base64的数据转换成图片

这篇文章主要讲解通过原生js,将图片地址转换为base64格式后显示的方法,以及base64的图片数据如何转换为file文件并提交。

js实现字符串/base64的编码和解码

JavaScript对字符串/base64的编码和解码;Base64其实是一种简单的置换加密方式,但是BASE64的用处往往并不是为了防止信息泄露,而且为了方便传输,进过BASE64编码后的信息会比原始信息长,大概是4/3倍。

js原生Base64转码和解码函数btoa和atob的使用

javascript原生的api是支持,Base64的, window.btoa方法将普通字符串转为Base64字符串,window.atob将Base64字符串转为普通字符串,它们在现代浏览器中受到广泛的支持。

图片保存到本地_原生js实现base64图片下载

在项目开发过程中,经常会有图片导出的需求,原生js实现base64图片下载实现思路:需要创建a标签,然后把base64的图片转为为blob对象,再通过URL.createObjectURL方法复制给a标签的href属性,最后添加添加事件的方法。

利用PHP将图片转换成base64编码的实现方法

base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一。base64主要不是加密,它主要的用途是把某些二进制数转成普通字符用于网络传输。由于这些二进制字符在传输协议中属于控制字符,不能直接传送,所以需要转换一下

原生 JS 的 Base64 转码

JavaScript 原生提供两个 Base64 相关的方法:btoa():任意值转为 Base64 编码,atob():Base64 编码转为原来的值。注意:这两个方法不适合非 ASCII 码的字符,会报错。

js base64的实现

base64是用规定的64种字符来表示任意二进制数据的一种编码格式,base64编码不提供加密,只是将一种形式的数据转化为另一种形式。Base64编码使用二进制表示,字符串的每一个字符由8个字节表示

Base64 编码与解码详解

Base64 是基于 64 个可打印字符 A-Z、a-z、0-9、+、/ 来表示二进制数据的表示方法,常用于数据在网络中的传输。本篇将分别介绍其编码、解码以及实际运用。

base64原理浅析

为什么图片转成Base64编码,就可以直接内联到HTML中显示呢?为什么Base64编码后,体积会增大1/3呢?如果你对此也有疑问的话,就往下一看究竟吧。

使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于地址不对或者没有将图片

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!