ArrayBuffer 到 base64 编码字符串
2022-08-30 00:14:34
我需要一种有效的(读取本机)方法来将a转换为base64字符串,该字符串需要在多部分帖子上使用。ArrayBuffer
我需要一种有效的(读取本机)方法来将a转换为base64字符串,该字符串需要在多部分帖子上使用。ArrayBuffer
function _arrayBufferToBase64( buffer ) {
var binary = '';
var bytes = new Uint8Array( buffer );
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode( bytes[ i ] );
}
return window.btoa( binary );
}
但是,非本机实现更快,例如 https://gist.github.com/958841 看到 http://jsperf.com/encoding-xhr-image-data/6
更新的基准测试:https://jsben.ch/wnaZC
这对我来说很好:
var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)));
在ES6中,语法更简单一些:
const base64String = btoa(String.fromCharCode(...new Uint8Array(arrayBuffer)));
如注释中所指出的,此方法可能会导致某些浏览器中的运行时错误(如果较大)。在任何情况下,确切的大小限制都取决于实现。ArrayBuffer