node中base64的转换规则

base64转换规则

base64可以编码任何东西,其基于二进制,方便传输,我们可以尝试编译一段文字

  • 输入无敌且英俊
  • node中汉字占3个字节,一个字节有8位,我们需要将函子转为二进制,只需要利用BUffer转为16进制再转为2进制即可
  • 可以判断,五个汉字转为二进制一共120位
  • 由于base64规定,每个字节不能超过64,我们可以推测出,一个字节8位的话有2**8 = 256,所以我们要重新分配每个字节的内容,使之不能超过64
    • 由 15*8 -> 20 * 6
    • 如: 11100111 10001111 10100000 -> 111001 111000 111110 100000
  • 然后将每一个字节转为10进制存储
  • 根据转化的十进制数查找字节码
  • 字节码为"A-Z"+“a-z”+“0-9”+“+/”,刚好64位
  • 查找出来的字节码拼接的字符串即为64编码
    let code16 = Buffer.from("无敌且英俊")
    //将16进制转为2进制
    //获取2进制字符串
    let code2 = ''
    for(let i = 0;i<code16.length;++i){
        code2+=code16[i].toString(2)
    }

    // 分别按6位开始截取,并转换成10进制
    let code10 = []
    let i = 6;
    while(i<=code2.length){
    code10.push(parseInt(code2.substring(i-6,i),2))
        i+=6
    }
    // 制作64编码,一共64个字符
    let code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    code += code.toLowerCase();
    code += '0123456789'
    code += '+/'

    let base64 = ""
    //输出字符对应的编码
    for(let i = 0;i<code10.length;++i){
        base64+=code[code10[i]]
    }
    console.log(base64)

我们可以将得出的64编码通过解码,得出我们的内容:无敌且英俊
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问也去

创作不易,感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值