41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
/**
|
|
* Base64编码工具
|
|
*/
|
|
|
|
const base64EncodeChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
|
|
|
export function base64Encode(str) {
|
|
let out = ''
|
|
let i = 0
|
|
const len = str.length
|
|
let c1, c2, c3
|
|
|
|
while (i < len) {
|
|
c1 = str.charCodeAt(i++) & 0xff
|
|
if (i === len) {
|
|
out += base64EncodeChars.charAt(c1 >> 2)
|
|
out += base64EncodeChars.charAt((c1 & 0x3) << 4)
|
|
out += '=='
|
|
break
|
|
}
|
|
c2 = str.charCodeAt(i++)
|
|
if (i === len) {
|
|
out += base64EncodeChars.charAt(c1 >> 2)
|
|
out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4))
|
|
out += base64EncodeChars.charAt((c2 & 0xF) << 2)
|
|
out += '='
|
|
break
|
|
}
|
|
c3 = str.charCodeAt(i++)
|
|
out += base64EncodeChars.charAt(c1 >> 2)
|
|
out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4))
|
|
out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6))
|
|
out += base64EncodeChars.charAt(c3 & 0x3F)
|
|
}
|
|
return out
|
|
}
|
|
|
|
export default {
|
|
base64Encode
|
|
}
|