将base64string转换为ArrayBuffer

我需要将base64编码string转换为ArrayBuffer。 base64string是用户input的,它们将被复制并粘贴到电子邮件中,所以当页面加载时它们不在那里。 我想这样做在JavaScript中,如果可能的话,没有做一个Ajax调用服务器。

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

ArrayBuffer以base64编码的string

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

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

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

有一个简单的(也许是本地)的方式来做转换? 谢谢

尝试这个:

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; } 

Goran.it的答案不工作,因为JavaScript中的unicode问题 – https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

我最终使用了Daniel Guerrero的博客中给出的函数: http : //blog.danguer.com/2011/10/24/base64-binary-decoding-in-javascript/

函数列在github链接上: https : //github.com/danguer/blog-examples/blob/master/js/base64-binary.js

使用这些线

 var uintArray = Base64Binary.decode(base64_string); var byteArray = Base64Binary.decodeArrayBuffer(base64_string); 

使用TypedArray.from :

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

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

刚刚发现base64-arraybuffer,一个小巧的npm包,上个月使用率非常高,5M下载(2017-08)。

https://www.npmjs.com/package/base64-arraybuffer

对于任何寻找最佳标准解决scheme的人来说,这可能就是这样。