我有一个巨大的数组,它由很长的整数列表组成,例如[196879, 37893, 137892]
。这个数组长450万个整数,占用21MB,通过JSON传输到我的网页很多。
我的问题是:有没有办法将这些整数编码为字母数字值以减少文件大小?我正在考虑类似于十六进制的东西,其中a=10, b=11, c=12...
,但具有更高的基数。如果我们有0-9,a-z和A-Z,理论上我们可以建立一个基本的62编号系统,如下所示:9Eo, bZ3, xQ, 9p1, wNd
。是否存在这样的文件格式,或者是否存在可以以这种方式对数组进行编码然后解码的JavaScript工具?
答案 0 :(得分:3)
我相信你可以创建一个整数数组,将其转换为二进制,然后上传该blob。每个整数将占用4个字节。
var count = 14.5 * 1000000;
var integers = new Int32Array(count);
var min = -100000;
var max = 100000;
for (var i = 0; i < count; i++) {
integers[i] = Math.floor(Math.random() * (max - min)) + min;
}
var blob = new Blob([integers]);
var data = new FormData();
data.append('data', blob);
$.ajax({
type: 'POST',
url: '/some_page',
data: data,
processData: false,
contentType: false
}).done(function(data) {
// TODO
});