JavaScript base64转化

/*把一个汉字转化成base64编码的过程:
1.把汉字转化成16进制
2.把16进制转化成2进制
3.把3个8=24位的二进制变成 4个6的二进制
4.把2进制转化成10进制
5.根据Base64编码表转化成base64编码*/
let base64core = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
base64core += base64core.toLowerCase();
base64core += '0123456789';
base64core += '+/';

function toBase64(text) {
let s2s = [...Buffer.from(text).values()].map(value => value.toString(2).padStart(8, '0'))
console.log('--s2s-->',s2s)
s2s = s2s.join('')

const s2List = s2s.match(/(\d{6})|(\d+)/g).map(s2 => s2.padEnd(6, '0'))
console.log('--s2List-->',s2List)
const s10List = s2List.map(s2 => parseInt(s2, 2))
console.log(s10List)
const base64 = s10List.map(s10 => base64core[s10]).join('')
return base64 + ('='.repeat((4 - base64.length % 4) % 4))
}
console.log(toBase64('你好'))

console.log('==================================================')


function base64ToStr(text) {
text = text.replace(/=+/,'');
const s2s = [...text].map(t=>base64core.indexOf(t).toString(2).padStart(6, '0')).join('')
const s2List = s2s.match(/(\d{8})|(\d+)/g).map(s2 =>s2.padStart(8, '0'))
console.log(decodeURIComponent('%'+s2List.map(s2=>parseInt( s2,2).toString(16)).join('%')))
}
base64ToStr('5L2g5aW9')

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值