/*把一个汉字转化成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')
JavaScript base64转化
最新推荐文章于 2024-04-19 11:19:11 发布