将 base64 字符串转换为 ArrayBuffer

2022-08-30 02:08:26

我需要将 base64 编码字符串转换为 ArrayBuffer。base64 字符串是用户输入的,它们将从电子邮件中复制并粘贴,因此在加载页面时它们不存在。如果可能的话,我想在javascript中执行此操作,而无需对服务器进行ajax调用。

我发现这些链接很有趣,但它们没有帮助我:

ArrayBuffer 到 base64 编码字符串

这是关于相反的转换,从ArrayBuffer到base64,而不是相反

http://jsperf.com/json-vs-base64/2

这看起来不错,但我不知道如何使用代码。

有没有一种简单的(也许是原生的)方法来进行转换?谢谢


答案 1

试试这个:

function _base64ToArrayBuffer(base64) {
    var binary_string = window.atob(base64);
    var len = binary_string.length;
    var bytes = new Uint8Array(len);
    for (var i = 0; i < len; i++) {
        bytes[i] = binary_string.charCodeAt(i);
    }
    return bytes.buffer;
}

答案 2

使用 TypedArray.from

Uint8Array.from(atob(base64_string), c => c.charCodeAt(0))

性能要与 for 循环版本的 Goran.it 答案进行比较。