我有一个由长整数列表组成的巨大数组,例如[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 工具可以以这种方式对数组进行编码和解码?
最佳答案
我相信您可以创建一个整数数组,将其转换为二进制,然后上传该 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
});
关于javascript - 将长数字编码为更高基数编号系统的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119819/