将较长的数字编码为字符以用于较高的基本编号系统

时间:2016-10-18 23:45:30

标签: javascript encoding hex file-transfer radix

我有一个巨大的数组,它由很长的整数列表组成,例如[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工具?

1 个答案:

答案 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
});