将长数字编码为更高基数的编码系统中的字符

Encoding long numbers into characters for higher base numbering system

本文关键字:编码 系统 字符 高基数 数字编码      更新时间:2023-09-26

我有一个由长整数列表组成的巨大数组,例如[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
});