首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

base64 格式的数据是如何实现的

(给前端大学加星标,提升前端技能.)

作者:隐冬

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

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

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

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

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

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

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

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

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

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

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

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

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

base64转译步骤

1、将字符串通过Buffer.from获取buffer,并将buffer中的每个16的buffer字节转为2进制

2、将所有二进制拼接在一起,6个一组进行划分,在前面补00,凑成8位二进制

3、将新的二进制转换成10进制

4、在base64集合中分别通过10进制下标取出,并链接

点赞和在看就是最大的支持

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210316A024O800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券