将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的人来说,这可能就是这样。