Javascript中Uint8Array转base64字符串

直接上代码

function arrayBufferToBase64(array) {
            array = new Uint8Array(array);
            var length = array.byteLength;
            var table = ['A','B','C','D','E','F','G','H',
                         'I','J','K','L','M','N','O','P',
                         'Q','R','S','T','U','V','W','X',
                         'Y','Z','a','b','c','d','e','f',
                         'g','h','i','j','k','l','m','n',
                         'o','p','q','r','s','t','u','v',
                         'w','x','y','z','0','1','2','3',
                         '4','5','6','7','8','9','+','/'];
            var base64Str = '';
            for(var i = 0; length - i >= 3; i += 3) {
                var num1 = array[i];
                var num2 = array[i + 1];
                var num3 = array[i + 2];
                base64Str += table[num1 >>> 2]
                    + table[((num1 & 0b11) << 4) | (num2 >>> 4)]
                    + table[((num2 & 0b1111) << 2) | (num3 >>> 6)]
                    + table[num3 & 0b111111];
            }
            var lastByte = length - i;
            if(lastByte === 1) {
                var lastNum1 = array[i];
                base64Str += table[lastNum1 >>> 2] + table[((lastNum1 & 0b11) << 4)] + '==';
            } else if(lastByte === 2){
                var lastNum1 = array[i];
                var lastNum2 = array[i + 1];
                base64Str += table[lastNum1 >>> 2]
                    + table[((lastNum1 & 0b11) << 4) | (lastNum2 >>> 4)]
                    + table[(lastNum2 & 0b1111) << 2]
                    + '=';
            }
            return base64Str;
        }

本来在网上找了方案,但由于后台代码写错了,导致我认为是转base64过程中出错,因此手动实现了一遍,纪念一下。
另外,使用FileReader可以把input标签的file转为Uint8Array。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值