Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无符号整数数组到base64的快速转换_Javascript_Internet Explorer_Base64 - Fatal编程技术网

Javascript 无符号整数数组到base64的快速转换

Javascript 无符号整数数组到base64的快速转换,javascript,internet-explorer,base64,Javascript,Internet Explorer,Base64,我有一个Javascript中的VBArray,它包含一长串8位无符号整数,通常超过1000个条目 我可以轻松地将其转换为常规阵列或Uint8Array,我的目标是获得其base64表示 我试过了,但还是跑了 var b64encoded = btoa(String.fromCharCode.apply(null, _uint8Array)); 抛出堆栈外空间异常 转换本身不是问题,因为我可以编写自己的转换方法,它可以执行以下操作 create empty bit string foreach

我有一个Javascript中的VBArray,它包含一长串8位无符号整数,通常超过1000个条目

我可以轻松地将其转换为常规阵列或Uint8Array,我的目标是获得其base64表示

我试过了,但还是跑了

var b64encoded = btoa(String.fromCharCode.apply(null, _uint8Array));
抛出堆栈外空间异常

转换本身不是问题,因为我可以编写自己的转换方法,它可以执行以下操作

create empty bit string
foreach value in the array
  get binary with toString(2)
  pad the binary to make it 8-bit
  add it to the bit string
因此,Base64转换非常简单


可以想象,性能相当差。关于如何改进的任何建议?

您可以尝试以下方法来限制参数的数量,从而减少所需的堆栈空间:

var A = new Uint8Array(10000000), s = '';

// Encode at most 49152 bytes at a time
for (var i = 0; i < A.length; i += 49152) {
    s += btoa(String.fromCharCode.apply(null, A.subarray(i, i + 49152)));
}
var A=新的Uint8Array(10000000),s='';
//一次最多编码49152字节
对于(变量i=0;i

您可以将数字
49152
更改为低于浏览器限制且可被3整除的任何数字。

您可以尝试以下方法来限制参数的数量,从而减少所需的堆栈空间:

var A = new Uint8Array(10000000), s = '';

// Encode at most 49152 bytes at a time
for (var i = 0; i < A.length; i += 49152) {
    s += btoa(String.fromCharCode.apply(null, A.subarray(i, i + 49152)));
}
var A=新的Uint8Array(10000000),s='';
//一次最多编码49152字节
对于(变量i=0;i

您可以将数字
49152
更改为任何低于浏览器限制且可被3整除的数字。

简洁、漂亮。“可被3整除”的部分是一个细节,这会困扰很多人,因为它是简洁的。“可被3整除”部分是一个细节,这会困扰很多FTW