首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ArrayBuffer到base64编码的字符串

ArrayBuffer到base64编码的字符串
EN

Stack Overflow用户
提问于 2012-02-14 04:57:17
回答 12查看 276.5K关注 0票数 259

我需要一个有效的(读原生)的方式来转换一个ArrayBuffer到一个base64字符串,这需要在一个多部分的帖子使用。

EN

回答 12

Stack Overflow用户

发布于 2012-02-27 09:29:03

代码语言:javascript
复制
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

票数 279
EN

Stack Overflow用户

发布于 2012-07-19 22:02:01

这对我来说很好:

代码语言:javascript
复制
var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)));

在ES6中,语法要简单一点:

代码语言:javascript
复制
const base64String = btoa(String.fromCharCode(...new Uint8Array(arrayBuffer)));

正如注释中指出的,当ArrayBuffer很大时,此方法可能会在某些浏览器中导致运行时错误。在任何情况下,确切的大小限制都取决于实现。

票数 140
EN

Stack Overflow用户

发布于 2017-02-20 07:56:26

对于那些喜欢它简短的人,这里有另一个使用Array.reduce的方法,它不会导致堆栈溢出:

代码语言:javascript
复制
var base64 = btoa(
  new Uint8Array(arrayBuffer)
    .reduce((data, byte) => data + String.fromCharCode(byte), '')
);
票数 51
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9267899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档