自定义函数JSA_A_BASE64STRINGTOBINARYSTRING base64转二进制字符

function JSA_A_BASE64STRINGTOBINARYSTRING(base64String) { //base64String 转 二进制字符串
    base64String = base64String.valueOf();
    const keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    const cleanBase64String = base64String.replace(/^data:.*?;base64,/, ''); //移除可能的base64String前缀和数据URI前缀
    
    if (!/^[A-Za-z0-9+/]*={0,2}$/.test(cleanBase64String)) { //验证base64String格式(简单的格式检查)
        throw new TypeError("无效的base64String格式");
    }
    
    let binaryString = "";
    let chr1, chr2, chr3;
    let enc1, enc2, enc3, enc4;
    let i = 0;
    
    while (i < cleanBase64String.length) {
        enc1 = keyStr.indexOf(cleanBase64String.charAt(i++));
        enc2 = keyStr.indexOf(cleanBase64String.charAt(i++));
        enc3 = keyStr.indexOf(cleanBase64String.charAt(i++));
        enc4 = keyStr.indexOf(cleanBase64String.charAt(i++));
        
        chr1 = (enc1 << 2) | (enc2 >> 4);
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
        chr3 = ((enc3 & 3) << 6) | enc4;
        
        binaryString = binaryString + String.fromCharCode(chr1);
        
        if (enc3 !== 64) { // 64代表'=',填充符1
            binaryString = binaryString + String.fromCharCode(chr2);
        }
        
        if (enc4 !== 64) { // 64代表'=',填充符2
            binaryString = binaryString + String.fromCharCode(chr3);
        }
    }
    
    return binaryString
}

插入函数对话框、函数参数对话框:

加载宏文件function Workbook_Open(){}中添加以下代码。

Application.MacroOptions("JSA_A_BASE64STRINGTOBINARYSTRING", "base64字符串 转 二进制字符串", undefined, undefined, undefined, undefined, 14, undefined, undefined, undefined, ['base64字符串。']);

云南省
浏览 20
收藏
1
分享
1 +1
1
+1
全部评论 1
 
497128657
关系图:https://bbs.wps.cn/topic/68275
· 云南省
回复