mirror of
https://github.com/501351981/vue-office.git
synced 2025-07-15 07:32:19 +08:00
60 lines
2.2 KiB
JavaScript
60 lines
2.2 KiB
JavaScript
let hexIn = false;
|
|
function utf16to8(str) {
|
|
var out, i, len, c;
|
|
var charCode;
|
|
out = hexIn ? [] : '';
|
|
len = str.length;
|
|
for(i = 0; i < len; i++) {
|
|
c = hexIn ? str[i] : str.charCodeAt(i);
|
|
if ((c >= 0x0001) && (c <= 0x007F)) {
|
|
hexIn ? out.push(str[i]) : out += str.charAt(i);
|
|
} else if (c > 0x07FF) {
|
|
charCode = (0xE0 | ((c >> 12) & 0x0F)); hexIn ? out.push(charCode) : out += String.fromCharCode(charCode);
|
|
charCode = (0x80 | ((c >> 6) & 0x3F)); hexIn ? out.push(charCode) : out += String.fromCharCode(charCode);
|
|
charCode = (0x80 | ((c >> 0) & 0x3F)); hexIn ? out.push(charCode) : out += String.fromCharCode(charCode);
|
|
} else {
|
|
charCode = (0xC0 | ((c >> 6) & 0x1F)); hexIn ? out.push(charCode) : out += String.fromCharCode(charCode);
|
|
charCode = (0x80 | ((c >> 0) & 0x3F)); hexIn ? out.push(charCode) : out += String.fromCharCode(charCode);
|
|
}
|
|
}
|
|
return out;
|
|
}
|
|
var base64EncodeChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
|
|
function base64encode(str) {
|
|
var out, i, len;
|
|
var c1, c2, c3;
|
|
var charCode;
|
|
|
|
len = str.length;
|
|
i = 0;
|
|
out = '';
|
|
while(i < len) {
|
|
c1 = (hexIn ? str[i++] : str.charCodeAt(i++)) & 0xff;
|
|
if(i == len)
|
|
{
|
|
out += base64EncodeChars.charAt(c1 >> 2);
|
|
out += base64EncodeChars.charAt((c1 & 0x3) << 4);
|
|
out += '==';
|
|
break;
|
|
}
|
|
c2 = (hexIn ? str[i++] : 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 = (hexIn ? str[i++] : 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 function base64_encode(src) {
|
|
return base64encode(utf16to8(src));
|
|
} |